Характеристики

Что такое свойства? Что ж, свойства чем-то напоминают переменные на стероидах. Вы можете получать или устанавливать значения свойства, запускать через них функциональный код и использовать их для управления модификаторами доступа из переменных. Давайте начнем с создания скрипта Player и начнем декларировать свойства!

Объявление свойств

Вы когда-нибудь замечали, что IntelliSenseпоказывает вам значение get или set после использования точечной записи? Это свойства! Это говорит вам о том, что вы можете получить или установить положение объекта.

Некоторые вещи, такие как Time.deltaTime, имеют только значение получить , но не могут установить значение. Это связано с тем, что модификатор доступа значения set является частным или защищенным.

Когда вы используете знак равенства для присвоения значения переменной, вы устанавливаете значение. Обратите внимание, что попытка установитьзначение Time.deltaTime вызывает ошибку, так как у него нет установленного значения. Установка значения ammoCount работает, поскольку у него есть get и set.

Во-первых, это стандартная личнаяпеременная для скорости моего проигрывателя с использованием camel case. Затем в объявлении открытого свойства используется регистр pascal с тем же именем переменной. Внутри функции находится ключевое слово get, за которым следуют фигурные скобки с возвратом частного значения скорости.

Теперь, когда я проверяю общедоступное свойство скорости в void Start, вы видите, что у меня есть возможность получитьзначение, но не установите его.

Ниже get вы можете создать набор и назначитьприватную переменную скорости camel case равной значение ключевого слова. Unity автоматически определит возвращаемый тип значения на основе частной переменной и убедится, что вы возвращаете правильный тип значения.

Теперь общедоступное свойство скорости показывает, что я могу получить и установить значение.

Еще одна вещь, которую вы можете сделать, это запустить код из этих методов! Здесь я представляю переменные скорости min и max. Если бы я увеличил свою скорость до увеличить, я мог бы проверить, достигает ли она значения переменной maxскорости, а затем запустить некоторый код. Как показано в разделе void Start внизу, вы можете назначить значение свойства, как и для обычной переменной. .

Автоматические свойства

Существует более короткий и понятный способ объявления свойств — Auto Property. Теперь, когда исходная переменная удалена, все, что мне нужно, — это одно автоматическое свойство с get и set.

Ввод Speed ​​ в поле void Start показывает, что я все еще могу получить и установить это значение.

Как и в случае с обычной переменной, я также могу назначить значение Auto Property.

Следует отметить, что вы не можете запускать дополнительный код через Автоматическое свойство. Если вы хотите запускать код в своих функциях, используйте более длинное объявление свойства.

Здесь вы также можете назначить модификатор доступа для get или set. В этом примере набор теперь является закрытым. На самом деле вам нужно иметь get и set при использовании автоматического свойства, в отличие от обычного свойства. Поэтому, если вам нужен только get, вам все равно нужно объявить частный набор для свойства, доступного только для чтения.

Свойство Speed ​​теперь отображает наборы get и private в IntelliSense. Если бы я получил доступ к этому из другого скрипта, я бы увидел только get как доступную опцию. Таким образом, другие сценарии могут читать это значение, но не изменять его.

Следует также отметить, что хотя это свойство является общедоступным, оно по-прежнему не может быть сериализовано в инспекторе >. Однако вы можете просмотреть его в инспекторе, используя режим отладки, если это необходимо.

Он будет отображаться здесь как серое поле, но, тем не менее, видимое.

Когда использовать свойства

Свойства отлично подходят для классов менеджеров, поскольку вы не можете сразу назначитьих значение. Вы можете объявить их только с помощью get или set. Затем свойства необходимо инициализировать в пустом Start. Отсутствие возможности сериализовать поля свойств также делает их менее желательными в определенных ситуациях. Вы также можете отслеживать, сколько врагов появилось в вашей сцене, но вам не нужно менять значение. Отслеживание оценки — это еще один пример, когда вы можете захотеть, чтобы менеджер пользовательского интерфейса мог читать оценку, но не изменять ее. Последнее, на что следует обратить внимание, это то, что свойства также можно сделать статическими, если это соответствует вашим потребностям.

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