Unity 5: Запуск 2D игры — Урок 6

Этот урок описывает создание механизма запуска игры: при нажатии на экран выполняются действия, инициализирующие игровой процесс.

Материалы и визуальные эффекты

Создайте новый материал в папке materials и назовите его CubeMainCube. Задайте ему красный цвет (или любой другой). Создайте также новый UI Image. Настройте его размеры так, чтобы он полностью покрывал экран (Left, Right, Top, Bottom равны нулю). Сделайте его слегка прозрачным и желтоватым для улучшения визуального восприятия.

Оптимизация сцены

Пометьте все неподвижные объекты сцены (камера, Event System и другие статичные элементы) тегом Static. Это повышает производительность игры. В статистике вы увидите уменьшение количества треугольников (low poly) и увеличение FPS.

Зона клика и обработчик нажатий

Создайте объект Cube, растяните его на весь экран, удалите рендерер, оставив только Box Collider 2D. Сделайте этот коллайдер триггером (is Trigger). Создайте новый скрипт DetectClicks (в папке Main). В скрипте добавьте функцию обработки нажатий. Для тестирования добавьте вывод сообщения «Клик» в консоль.

using UnityEngine;

public class DetectClicks : MonoBehaviour
{
    void OnMouseDown()
    {
        Debug.Log("Клик");
    }
}

Прикрепите скрипт к созданному Cube. Теперь при каждом нажатии на экран в консоль будет выводиться «Клик».

Настройка коллайдеров кнопок

Если в игре есть кнопки, настройте их коллайдеры, чтобы они не перехватывали нажатия на основной зоне запуска. Добавьте к кнопкам Box Collider с координатой Z, например, равной 1. Это предотвратит срабатывание обработчика нажатий при клике на кнопках.

Доработка скрипта DetectClicks

Удалите Debug.Log и добавьте функционал работы с UI-элементами. Добавьте директивы using UnityEngine.UI; и using UnityEngine.EventSystems;.

Добавьте публичные переменные для работы с текстовыми полями: public Text PlayText;, public Text GameNameTxt;. При нажатии будем скрывать PlayText и записывать в GameNameTxt количество очков (например, 0).

Добавьте переменную для кнопок: public GameObject buttons; и переменную для отслеживания нажатия: private bool click = false;

using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;

public class DetectClicks : MonoBehaviour
{
    public Text PlayText;
    public Text GameNameTxt;
    public GameObject buttons;
    private bool click = false;

    void OnMouseDown()
    {
        if (!click)
        {
            // Однократное выполнение
            click = true;
            PlayText.gameObject.SetActive(false);
            GameNameTxt.text = "0";

            ScrollObjects scroll = buttons.GetComponent<ScrollObjects>();
            scroll.speed = -1F;
            scroll.checkPosition = -130F;

            // Анимация (описана далее)
        }
    }
}

Прикрепите в инспекторе ссылки на PlayText, GameNameTxt и buttons к скрипту.

Анимация начального кубика

Для улучшения визуального эффекта добавьте анимацию для начального кубика (StartGameCube). Анимация будет длиться 1 секунду и будет изменять размер и вращение кубика. Экспериментируйте с настройками анимации.

В скрипте DetectClicks добавьте вызов анимации:

// ... (предыдущий код) ...

            Animator anim = gameCube.GetComponent<Animator>();
            anim.Play("StartGameCube");

// ... (остальной код) ...

Замените gameCube на имя вашего объекта-куба.

В этом уроке мы создали функционал запуска игры: при нажатии на экран скрываются начальные элементы интерфейса, запускается анимация и основной игровой процесс. Дальнейшие улучшения могут включать добавление новых элементов и усложнение игровой механики.

Что будем искать? Например,программа