Блог онлайн школы Пиксель

Разработка игр для детей с нуля: как сделать Кликер на Юнити

Какие игры вы любите больше всего: бродилки, стрелялки, лабиринты или кликер? Предлагаем сегодня остановиться более подробно на таком жанре, как кликер на Юнити. Что это такое узнаем из статьи. 

А пока советуем подписаться на Youtube-канал школы “Пиксель”. В нем огромное множество бесплатных уроков программирования для детей и подростков на различные темы: Scratch, Python, Lua, Си Шарп, HTML, CSS, JavaScript, веб-программирование, компьютерная грамотность и другие.

Создадим с помощью языка программирования Си Шарп Кликер на Unity (Кликер на Юнити).  Кликер - это игра в которой нужно многократно нажимать на экран для получения очков. Самый известный представитель жанра - Кукикликер (Cookie Clicker). Кукикликер  — компьютерная игра, которую в 2013 году создал французский программистом Ж. Тьенно. 


Приступим к созданию своего собственного кликера.

Этап I. Создание проекта “Кликер на Юнити”


Запускаем Unity Hub. Создаем новый проект и выбираем шаблон 2d игры. Нажимаем File, Build Settings. Если вы уже создавали проект под андроид, то выбираем Android и нажимаем Switch Platform. Если же у вас не установлена данная платформа, как у меня допустим IOS, то нужно нажать Install with Unity Hub, а потом перезапустить проект. Дожидаемся компиляции скриптов. Переходим во вкладку Game и меняем Free Aspect на портретный режим с вашим разрешением экрана. 

Создание проекта “Кликер на Юнити”

Этап II. Создание интерфейса игры Кликера на Unity


Создаем канвас, а в нем Button - TextMeshPro. Импортируем необходимые компоненты для кнопки. Двойным кликом переходим к ней и настраиваем размер. Для кнопки я нашел в интернете картинку пиксельного сердечка и пиксельный шрифт. Элементы внешнего вида конечно же можете выбрать самостоятельно. Удаляем текст из кнопки и подключаем картинку. Подкорректируем размеры. Создадим текст в котором будут отображаться наши очки. Изменим размер и положение так, как нам нужно и привяжем положение этого элемента вот здесь с зажатой клавишей shift. Это нужно, чтобы при изменении размера экрана кнопка оставалась в том же положении как мы и задумали. Впишем начальное значение очков, подключим шрифт, выставим выравнивание по середине, изменим размер и поменяем цвет. Также я поменяю цвет заднего фона. Посмотрим на получившийся результат в окне Game.

Создание интерфейса игры Кликера на Unity

Этап III. Создание скрипта для игры Кликера на Юнити


Переходим в камеру и прикрепляем к ней новый скрипт, называем его GameManager. Нажимаем на New script, а затем на кнопку создать и добавить. Заходим в него. Пока что удалим функции, которые здесь есть. Добавим их при необходимости. Для того чтобы видеть переменную в инспекторе напишем SerializeField. Объявляем переменную, в которой будем хранить наши очки. Далее создадим переменную, которая будет хранить количество очков, прибавляемое при каждом клике. В начале игры будет равняться единице. Теперь объявим переменную, к которой будем подключать текст в Unity. Чтобы это сработало нужно подключить библиотеку UnityEngine.UI. 
Создаем функцию Update, вызываемую каждый кадр игры, в ней будем обновлять текст очков в Unity в соответствии с числовым значением в скрипте. Чтобы число перевести в строковое значение воспользуемся методом ToString. Далее напишем метод клик, в котором будем увеличивать счет игрока при клике на значение соответствующей переменной.
Переходим в Unity и подключаем объект на котором висит скрипт с методом Клик и в выпадающем списке выбираем его. А также не забываем подключить текст со счетом игрока к скрипту, чтобы он менялся в игре. Запускаем и проверяем. Как мы видим все работает.

Создание скрипта для игры Кликера на Юнити

Этап IV. Улучшение клика в проекте “Кликер на Unity”


На канвас добавляем кнопку, при нажатии на которую игрок усилит свой клик. Даем ей соответствующее название и настроим размер и положение, а также перепишем текст на кнопке. Кроме того создадим текст в котором будет написана цена за улучшение. Для того чтобы игру было легче тестировать задам цену в 10 кликов. Настроим внешний вид текста аналогично тексту счета игрока.
Перейдем в скрипт для реализации улучшения. Создадим переменную, которая будет хранить цену за улучшение клика. А также переменную текста цены из Unity. В Update будем обновлять надпись в соответствии с числовым значением скрипта.
Объявим функцию прокачки клика. Начнем с условия. Если счет игрока больше или равен цене апгрейда, то это значит что игрок может купить его. Внутри условия отнимем от счета игрока цену за улучшение, увеличим цену на следующую покупку, а также усилим клик на один. Если же у игрока не хватило очков, то пишем в консоль об этом. В дальнейшем можно заменить вывод в консоль на вывод сообщения прямо в игре. Сохраняем и переходим в Unity.
Подключаем объект со скриптом к кнопке. И выбираем соответствующий метод. Запускаем и проверяем. Так как нем не хватает очков, нам вывелось сообщение, и улучшение не произошло. Наберем нужное количество очков и попробуем улучшить. Все работает.

Улучшение клика в проекте “Кликер на Unity”

Этап V. Автоматические клики в игре  Кликер на Юнити


Теперь создадим улучшение автоматических кликов. Копируем кнопку и текст. Привяжем их к правому нижнему углу. Переименуем текст и кнопку. Перепишем текст на кнопке в соответствии с ее функцией. Цену за улучшение автоклика выставлю в 30 очков.
Открываем скрипт. Объявляем переменную силы автоклика. В начале игры будет равняться 0. А также объявим переменную цены улучшения автоклика. И по традиции переменную к которой будем подключать текст. В Update как обычно обновляем цену в соответствии с числовым значением, так как по ходу игры цена будет увеличиваться. 
Объявляем функцию апгрейда клика. Как и с предыдущим апгрейдом нам нужно проверить, что у игрока хватает денег на покупку, а только потом проводить само улучшение.
Теперь объявим корутину в которой в бесконечном цикле while будем прибавлять к счету значение автоматического клика каждую секунду.
Саму корутину запускаем в функции Start, которая вызывается один раз в начале игры.
Переходим в Unity и выбираем функцию для вызова по нажатию на кнопку улучшения автоклика. Подключать камеру не нужно так как мы скопировали эту кнопку. Подключаем текст цены автоклика к скрипту на камере. Запускаем игру и проверяем. Соберем достаточное количество очков для покупки и купим улучшение. Как мы видим все работает.

Автоматические клики в игре Кликер на Юнити

Созданную игру можно улучшить, добавив дополнительные функции, которые рекомендуем попробовать реализовать самостоятельно. Видеоурок по созданию кликера в Unity можно посмотреть на Youtube-канале


Школа программирования для детей “Пиксель” приглашает школьников10-14 лет пройти курс с нуля Unity и Cи Шарп. Попробуйте себя в роли разработчика и создателя компьютерных игр. Приблизьтесь к миру IT под руководством практикующих программистов.

Для создания Кликера на Юнити потребуются пиксельные сердечко и шрифт. Скачать сердечко можно по ссылке, а шрифт доступен здесь. За основу не обязательно брать именно эти составляющие. Можете выбрать что-то другое, более подходящее на ваш взгляд.

Скрипт Кликера на Юнити:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class GameManager : MonoBehaviour
{
    [SerializeField] private int score;
    [SerializeField] private int clickGain = 1;
    [SerializeField] private int autoClickGain = 0;
    [SerializeField] private int upgradeClickCost = 10;
    [SerializeField] private int upgradeAutoClickCost = 30;

    [SerializeField] private Text scoreText;
    [SerializeField] private Text upgradeClickCostText;
    [SerializeField] private Text upgradeAutoClickCostText;

    private void Start()
    {
        StartCoroutine(AutoClickCorutine());
    }

    private void Update()
    {
        scoreText.text = score.ToString();
        upgradeClickCostText.text = upgradeClickCost.ToString();
        upgradeAutoClickCostText.text = upgradeAutoClickCost.ToString();
    }

    public void Click()
    {
        score += clickGain;
    }

    public void UpgradeClick()
    {
        if (score >= upgradeClickCost)
        {
            score -= upgradeClickCost;
            upgradeClickCost += 20;
            clickGain++;
        }
        else Debug.Log("Не хватает очков для покупки");
    }

    public void UpgradeAutoClick()
    {
        if (score >= upgradeAutoClickCost)
        {
            score -= upgradeAutoClickCost;
            upgradeAutoClickCost += 20;
            autoClickGain++;
        }
    }

    IEnumerator AutoClickCorutine()
    {
        while (true)
        {
            score += autoClickGain;
            yield return new WaitForSeconds(1);
        }
    }
}

2023-01-17 14:42 Unity для детей Бесплатные видеоуроки