C# Unity: Базовые скрипты и пространства имен

Любой C# скрипт в Unity состоит из нескольких основных компонентов. Рассмотрим их на примере.

Пространства имен

В начале скрипта обычно указываются пространства имен (namespaces), которые можно рассматривать как модули или библиотеки. Они расширяют возможности скрипта, добавляя новый функционал, классы и функции. Например, System.Collections и System.Collections.Generic предоставляют доступ к классам для работы с коллекциями (динамическими массивами). Эти подключения можно удалить, если коллекции не используются.

Подключение UnityEngine обязательно. В этом пространстве имен находятся основные стандартные классы Unity, включая MonoBehaviour – базовый класс для всех C# скриптов Unity. Все методы, такие как Start и Update, а также возможности взаимодействия с объектами Unity, определены в UnityEngine.

Класс и наследование от MonoBehaviour

Далее следует класс. Название класса должно совпадать с именем файла скрипта. Класс обычно наследует от MonoBehaviour. Это обеспечивает доступ к методам Start, Update и множеству других методов.

Метод Start выполняется при запуске игры. Всё, что находится внутри этого метода, будет выполнено один раз в начале игры. Метод Update (убранный из примера для следующего урока) выполняется каждый кадр.

Вывод информации в консоль

Для вывода информации в консоль Unity используется класс Debug из пространства имен UnityEngine. Метод Debug.Log() выводит сообщение в консоль. Например, Debug.Log("Hello world!"); выведет строку «Hello world!» в консоль Unity.

Важно: C# скрипты не выполняются автоматически. Для выполнения скрипта его необходимо поместить на игровой объект (GameObject) в сцене Unity. Если объект неактивен, скрипт на нём также не будет выполняться.

Базовые концепции C#

В скриптах Unity используется стандартный язык C#, поэтому все его конструкции (переменные, циклы, условия и т.д.) доступны.

Переменные

Для создания переменной указывается тип данных и имя. Модификаторы доступа (public, private, protected) определяют видимость переменной:

  • public – переменная видна внутри класса и в Unity.
  • private – переменная видна только внутри класса.
  • protected – переменная видна внутри класса и в классах-наследниках.

Переменные, объявленные как public, доступны для редактирования в Unity, позволяя менять их значения во время редактирования сцены или во время выполнения игры. Однако изменения, внесенные во время выполнения, не сохраняются после остановки игры.

Атрибут [SerializeField] делает приватную переменную доступной для редактирования в Unity, не делая её публичной:

[SerializeField] private int myInt = 5;

Массивы и коллекции

Для создания массива указывается тип данных, имя и размерность:

public int[] myIntArray = new int[3];

Размер массива определяется при создании и не может быть изменен во время выполнения.

Динамические массивы (например, List<T>) позволяют изменять размер во время выполнения. Для их использования необходимо подключить пространства имен System.Collections и System.Collections.Generic.

using System.Collections.Generic;

public List<string> myStringList = new List<string>();

Условные операторы и циклы

В скриптах Unity можно использовать все стандартные условные операторы и циклы C# (if, else, switch, for, while, foreach). Их использование аналогично стандартному C#.

Методы

Можно создавать собственные методы, используя стандартный синтаксис C#.

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

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