SerializeField
Часть раздела Основы скриптинга в Unity путешествия по Unity на Coddy. Урок 8 из 67.
Поле public выполняет сразу две задачи: оно отображается в Inspector, и любой другой скрипт может читать его и изменять. Часто нужно только первое. Поле private (значение по умолчанию в C#) может изменять только сам класс, поэтому никакой другой скрипт не сможет его нарушить, но Unity не отображает его в Inspector.
[SerializeField] просит Unity сохранить и показать приватное поле. Диапазон этой турели задаётся для каждой турели отдельно в Inspector, и никакой другой скрипт не может его изменить:
[SerializeField] private float range = 5f;
void Start()
{
Debug.Log("Range: " + range);
}Так в большинстве кода Unity хранят настройки: как приватные поля с [SerializeField]. Будь осторожен с обратной ситуацией: сделай поле приватным и забудь атрибут — и Unity молча отбросит значение, сохранённое в сцене. Поле получит значение числа из кода, и никакая ошибка тебя об этом не предупредит.
Задание
ЛегкоПоле height лампы является публичным, поэтому любой скрипт может её переместить. Сделай height приватным, оставив его в Inspector, где ему задаётся значение 4. Лампа по-прежнему должна висеть на высоте, заданной в Inspector.
Нажми Play и посмотри на высоту лампы, затем нажми Check.
Попробуйте сами
using UnityEngine;
public class LampHeight : MonoBehaviour
{
public float height = 1f;
void Start()
{
transform.position = new Vector3(0, height, 0);
}
}
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы скриптинга в Unity
1Ваш первый скрипт
Привет, UnityРазместите кубДвигайте каждый кадрПоворачивайте каждую секундуУправляйте клавишамиПовторение: управляйте кубом2Инспектор
Поля инспектораSerializeFieldЧисла с плавающей точкой и MathfАтрибуты инспектораПовторение: лифт5Преобразования и иерархия
Родители и детиМасштабПосмотри на объектыДвигайся к точкеПовторение: Луна на орбите6Игровые объекты и компоненты
Ссылки в InspectorПолучение компонентаОтсутствующие компонентыДобавление компонентаRequireComponentПоказать и скрытьПовторение: выключатель света