VStamp

Уроки C# Unity / #3 – Базовые концепции скриптов в Unity

Основы C# в Unity: Работа с переменными, массивами и выводом в консоль

TutorialШкола itProger / Программирование159,904 viewsMar 17, 2022

Изучаем базовые концепции скриптов на C# в Unity: namespaces, классы, методы, переменные и массивы с практическими примерами.

C#
Unity
Скрипты
Переменные
Массивы
Динамические массивы
Namespace
MonoBehaviour
Методы Start и Update
Debug.Log
Модификаторы доступа
List
Условия
Циклы
itProger

Blurb

В этом уроке вы познакомитесь с основами программирования на C# в Unity:

  • Понимание структуры C# скрипта в Unity: namespaces, классы и наследование от MonoBehaviour.
  • Использование методов Start и Update для управления поведением объектов.
  • Вывод информации в консоль Unity с помощью Debug.Log.
  • Создание и использование переменных с разными модификаторами доступа (public, private, protected).
  • Работа с массивами и динамическими коллекциями List.
  • Основы условий и циклов в C# для Unity.

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

Want the big picture?

Highlighted Clips

1.

Введение в структуру C# скрипта в Unity

Объяснение namespaces, класса MonoBehaviour и методов Start и Update.

2.

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

Как использовать Debug.Log для вывода сообщений в консоль Unity и почему нельзя использовать стандартный Console.

3.

Привязка скрипта к игровому объекту

Объяснение необходимости размещения скрипта на объекте для его выполнения и влияние активности объекта на выполнение скрипта.

4.

Работа с переменными в C# для Unity

Создание переменных с разными типами данных и модификаторами доступа, а также их отображение и изменение в Unity Editor.

Введение и обзор базовых концепций C# в Unity

В начале урока автор приветствует зрителей и рекомендует сайт itproger.com, где можно найти код урока, домашние задания и дополнительную информацию. Он сразу переходит к разбору структуры стандартного C# скрипта в Unity, обращая внимание на ключевые элементы: подключаемые namespace (пространства имен), класс, наследующий от MonoBehaviour, и методы Start и Update.

"Любой C# скрипт, который создается в Unity, он будет состоять из нескольких вещей: во-первых, это различные подключаемые namespace... Также здесь создается сам класс, который наследует всё от основного класса MonoBehaviour."

Автор объясняет, что namespace — это модули или библиотеки, которые расширяют функционал скрипта, а MonoBehaviour — базовый класс для всех скриптов в Unity, предоставляющий доступ к жизненному циклу объекта.

Ключевые моменты:

  • Namespace подключают дополнительные классы и функции.
  • Класс скрипта должен наследовать MonoBehaviour для взаимодействия с Unity.
  • Методы Start и Update — основные точки входа для логики скрипта.
  • Можно удалять ненужные подключения, если функционал не используется.

Работа с консолью Unity и вывод информации

Автор показывает, как вывести сообщение в консоль Unity с помощью класса Debug и метода Log. Он подчеркивает, что стандартный класс Console из C# не подходит для вывода в Unity, так как нужна именно консоль движка.

"Нам нужно вывести информацию в консоль Unity, поэтому здесь нам нужно обратиться к специальному классу, который существует в UnityEngine, он называется Debug."

Также объясняется, что скрипт должен быть прикреплен к объекту в сцене (например, к камере), чтобы его методы выполнялись при запуске игры.

"Чтобы ваш скрипт выполнялся, нужно, чтобы он находился на каком-то объекте, который при старте игры будет создаваться."

Ключевые моменты:

  • Для вывода в консоль Unity используется Debug.Log.
  • Стандартный Console не работает в Unity.
  • Скрипт должен быть привязан к объекту в сцене для выполнения.
  • Если объект неактивен, скрипт не выполняется.

Переменные в C# для Unity: типы и модификаторы доступа

Далее автор переходит к созданию переменных в скрипте. Он объясняет, что для объявления переменной нужно указать тип данных и модификатор доступа (public, private, protected). Особое внимание уделяется тому, что public переменные отображаются в инспекторе Unity и их значения можно менять прямо в редакторе.

"Если мы укажем модификатор доступа public, то переменная будет видна в Unity, и мы можем менять её значение прямо в редакторе."

Также показано, что изменения переменных во время выполнения игры не сохраняются после остановки проекта.

Ключевые моменты:

  • Объявление переменных: тип данных + модификатор доступа.
  • Public переменные видны и редактируются в Unity.
  • Изменения переменных во время игры не сохраняются.
  • Можно создавать переменные разных типов: int, float, string и др.

Управление видимостью переменных в Unity

Автор рассказывает, как скрыть public переменную из инспектора Unity с помощью атрибута [NonSerialized], а также как показать private или protected переменную с помощью [SerializeField].

"Если нужно, чтобы переменная была public, но не отображалась в Unity, используйте [NonSerialized]. Если переменная private, но нужно показать её в Unity, используйте [SerializeField]."

Это позволяет гибко управлять тем, какие данные доступны для редактирования в редакторе, а какие — нет.

Ключевые моменты:

  • Атрибут [NonSerialized] скрывает public переменную в инспекторе.
  • Атрибут [SerializeField] показывает private/protected переменную в инспекторе.
  • Позволяет контролировать доступность переменных в редакторе.

Массивы в Unity: статические и динамические

Далее рассматриваются массивы. Автор показывает, как объявить статический массив с фиксированным размером и как он отображается в инспекторе Unity, где можно менять размер и значения элементов до запуска игры.

"Массив — это фиксированная структура, размер которой нельзя менять во время выполнения игры."

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

"Динамический массив создается на основе класса List, и его размер можно менять во время выполнения."

Ключевые моменты:

  • Статические массивы имеют фиксированный размер, задаваемый при создании.
  • Размер статического массива нельзя менять во время игры.
  • Динамические массивы реализуются через List<T>.
  • Для динамических массивов нужно подключить дополнительные namespace.

Использование условий, циклов и методов в C# для Unity

В заключительной части урока автор кратко упоминает, что в Unity можно использовать все стандартные конструкции C#: условия (if, switch), циклы (for, while, foreach), а также создавать собственные методы.

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

Он демонстрирует создание пустого метода и его вызов из Start, подчеркивая, что синтаксис и возможности такие же, как в обычном C#.

Ключевые моменты:

  • В Unity можно использовать все стандартные конструкции C#.
  • Можно создавать и вызывать собственные методы.
  • Синтаксис и логика полностью совпадают с обычным C#.

Итоги урока и рекомендации

В конце автор подводит итоги: были рассмотрены базовые концепции работы с C# скриптами в Unity, включая подключение namespace, создание классов и методов, работу с консолью, переменными и массивами.

"В этом уроке мы рассмотрели базовые концепции, научились работать с переменными и массивами в C# скриптах."

Он приглашает зрителей посетить сайт itproger.com и присоединиться к сообществу, а также обещает дальнейшее изучение тем в следующих уроках.

Ключевые моменты:

  • Изучены основы C# в Unity: классы, методы, переменные, массивы.
  • Рекомендация использовать сайт itproger.com для дополнительного обучения.
  • Следующие уроки будут посвящены более сложным темам.

Этот урок отлично подходит для начинающих, давая прочную базу для понимания, как устроены скрипты в Unity и как использовать C# для создания интерактивных элементов в играх.

Key Questions

В Unity для вывода сообщений в консоль используется класс Debug из пространства имен UnityEngine, так как стандартный Console не отображает сообщения в консоли Unity.

Have more questions?

Analyzing video...

This may take a few moments.

Background illustration light mode

Ready to dive in?