Unity 3D: C# программирование для начинающих

Этот туториал охватывает основы программирования в Unity 3D на языке C#. Он служит мостом между базовыми знаниями C# и разработкой в Unity, предоставляя практические навыки.

Основы Unity и программирования

В Unity 3D объекты состоят из компонентов, определяющих их свойства. Программирование в Unity часто сводится к созданию и взаимодействию с этими компонентами. Компоненты пишутся на C#, хотя ранее использовался JavaScript, сейчас он практически не применяется.

Создание и редактирование скриптов

Создайте C# скрипт в проекте Unity, например, «Test». Для редактирования используется внешняя среда, такая как Visual Studio. Скрипт представляет собой простой класс, наследуемый от MonoBehaviour. Имя класса должно совпадать с именем файла скрипта. Переименование класса сделает компонент недоступным в Unity. Компонент добавляется к объекту перетаскиванием скрипта на него.

Основные методы MonoBehaviour

Основные методы для работы со скриптами в Unity:

  • Start(): Вызывается при запуске игры или сцены.
  • Update(): Вызывается при каждом обновлении кадра (обычно 60 раз в секунду).

Дополнительные методы описаны в документации Unity (Script Reference).

Вывод в консоль

Для вывода сообщений в консоль используется метод Debug.Log(). Пример:

Debug.Log("Hello, world!  ");

Если вызов Debug.Log() находится в Update(), сообщение будет выводиться каждый кадр.

Взаимодействие с объектами и компонентами

Объявление переменных

Объявление публичных переменных (public) в классе позволяет Unity отобразить их в инспекторе для настройки. Например:

public GameObject myObject;

Отсутствие назначенного объекта приведёт к ошибке NullReferenceException.

Доступ к компонентам

Для доступа к стандартным компонентам объекта (например, Transform) используется следующий синтаксис:

transform.Translate(new Vector3(1, 0, 0) * Time.deltaTime);

Это перемещает объект на единицу по оси X за кадр. Time.deltaTime обеспечивает независимость от частоты кадров. Альтернативный способ — объявление переменной типа компонента и назначение её в инспекторе.

Компонент «Health»

Пример компонента Health, хранящего количество жизней объекта и имеющего метод Damage():

public class Health : MonoBehaviour
{
    public float hitPoints;

    public void Damage(float damage)
    {
        hitPoints -= damage;
        if (hitPoints <= 0)
        {
            Destroy(gameObject);
        }
    }
}

Вызов метода компонента другого объекта осуществляется через GetComponent() или SendMessage():

// Через GetComponent()
Health health = otherObject.GetComponent<Health>();
if (health != null) health.Damage(10);

// Через SendMessage()
otherObject.SendMessage("Damage", 10);

Работа со вводом и триггерами

Ввод с клавиатуры

Обработка ввода с клавиатуры осуществляется с помощью класса Input:

if (Input.GetKey(KeyCode.E))
{
    // Действие при зажатой клавише E
}

Ввод с мыши

Обработка ввода с мыши также осуществляется с помощью класса Input:

if (Input.GetMouseButtonDown(0))
{
    // Действие при нажатии левой кнопки мыши
}

Триггеры

Триггеры используются для обнаружения столкновений без физического отталкивания. Для создания триггера установите флажок Is Trigger в компоненте Collider. События триггеров:

  • OnTriggerEnter(): Вызывается при входе в триггер.
  • OnTriggerExit(): Вызывается при выходе из триггера.
  • OnTriggerStay(): Вызывается, пока объект находится в триггере.

Этот туториал представил базовые понятия программирования в Unity 3D на C#. Для более глубокого изучения рекомендуем обратиться к документации Unity (Script Reference).

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