Найти в Дзене

Публичные переменные в Unity

Понятие модификаторов доступа вводится в объектно-ориентированном программировании, которое является обширной и сложной темой. Но, чтобы начать работу в Unity, нам достаточно разобраться с модификатором «public» и понять принцип его использования в скриптах. Вообще модификаторы доступа — это ключевые слова, которые задают параметры доступа для классов и их компонентов (переменных, полей, методов и пр.). В языке C# существует несколько различных модификаторов, более подробную информацию о них можно найти в интернете. Нас интересует пока только модификатор «public», при помощи которого мы можем сделать переменные скриптов «видимыми» в редакторе Unity. При использовании стандартных компонентов Unity у каждого из них есть свои поля для настройки. Рассмотрим пример: чтобы реализовать стрельбу в игре, нам необходимо генерировать игровые объекты выстрелов при нажатии на клавишу стрельбы. Для этого в коде скрипта определена переменная типа GameObject (7 строка): При нажатии клавиши пробел (Key

Понятие модификаторов доступа вводится в объектно-ориентированном программировании, которое является обширной и сложной темой. Но, чтобы начать работу в Unity, нам достаточно разобраться с модификатором «public» и понять принцип его использования в скриптах.

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

Нас интересует пока только модификатор «public», при помощи которого мы можем сделать переменные скриптов «видимыми» в редакторе Unity.

При использовании стандартных компонентов Unity у каждого из них есть свои поля для настройки.

Рисунок 1. Свойства компонентов
Рисунок 1. Свойства компонентов

Рассмотрим пример: чтобы реализовать стрельбу в игре, нам необходимо генерировать игровые объекты выстрелов при нажатии на клавишу стрельбы. Для этого в коде скрипта определена переменная типа GameObject (7 строка):

Рисунок 2. Скрипт стрельбы
Рисунок 2. Скрипт стрельбы

При нажатии клавиши пробел (KeyCode.Space) в строке 20 создается копия этого объекта при помощи команды Instantiate (подробнее про команду можно почитать в статье https://dzen.ru/a/ZdMauDkzZBE3Y77F):

Но как указать в коде скрипта какой игровой объект использовать в качестве выстрела, ведь в среде разработки кода мы не имеем доступ к игровым объектам? Если перейти в редактор Unity, то у компонента скрипта нет никакого поля для указания объекта выстрела.

Рисунок 3. Компонент скрипта
Рисунок 3. Компонент скрипта

Нам поможем модификатор «public». Допишем этот модификатор перед типом переменной.

Рисунок 4. Скрипт стрельбы
Рисунок 4. Скрипт стрельбы

Модификаторы доступа всегда пишутся перед типом переменной, иначе будет ошибка сборки.

Если теперь перейти в редактор Unity (изменения в скрипте нужно сохранить), то мы увидим, что в компоненте нашего скрипта появилось новое поле с именем «Bullet».

Рисунок 5. Компонент скрипта с полем Bullet
Рисунок 5. Компонент скрипта с полем Bullet

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

Рисунок 6. Связывание переменной с префабом игрового объекта
Рисунок 6. Связывание переменной с префабом игрового объекта

Таким образом модификатор «public» — это самый простейший способ вывести переменную для настройки в редактор Unity.

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

Рисунок 7. Скрипт простейшего движения
Рисунок 7. Скрипт простейшего движения