Обратите внимание, что в примере вы объявили класс поля , а не свойства .Они оба являются членами класса, но они совершенно разные.
Ради этого ответа я сосредоточусь на вашем примере, поэтому я расскажу о полях.
Оба public
и [SerializeField] private
позволяют вводить значение в Unity Inspector, но они действуют по-разному в сценариях.
1 - открытое поле
Вы объявляете открытое поле, когда хотите, чтобы онобыть использованы или установлены из другого класса.Этот выбор противоречит инкапсуляции, потому что другой скрипт может получить к нему доступ.Это все еще может быть предполагаемое поведение, если вы хотите, чтобы поле было доступно.
2 - Закрытое поле [SerializeField]
Это используется, когда вы хотите установить элемент в инспекторе, ноВы не хотите, чтобы другие классы видели это.Эта опция лучше подходит для инкапсуляции, потому что таким образом никакой другой скрипт не может получить доступ или изменить это поле.