Почему я должен использовать SerializeField?

Я только начал изучать C # и Unity, и есть одна вещь, к которой я не могу привыкнуть:Почему и когда я должен использовать ---- +: = 0 =: + ---- ?Разве плохо оставлять переменные жестко запрограммированными, несмотря на использование ---- +: = 1 =: + ----, и иметь больше текстовых полей в моем интерфейсе Unity?Заранее благодарю за внимание и терпение.
4 голоса | спросил Eminent Emperor Penguin 7 32018vEurope/Moscow11bEurope/MoscowWed, 07 Nov 2018 17:58:22 +0300 2018, 17:58:22

2 ответа


0
Почему и когда я должен использовать [SerializeField]?Использование атрибута ---- +: = 0 =: + ---- заставляет Unity сериализовать любую переменную ---- +: = 1 =: + ---- .Это не относится к статическим переменным и свойствам в C #.Вы используете атрибут ---- +: = 2 =: + ----, когда ваша переменная должна быть ---- +: = 3 =: + ----, но вы также хотите, чтобы она отображалась вРедактор.Например, это не будет отображаться в редакторе:И это потому, что это переменная ---- +: = 5 =: + ----, но приведенная ниже должна появиться в редакторе:Это потому, что вы применили ---- +: = 7 =: + ---- к нему, и вы говорите Unity сериализовать его и показать в редакторе.Обратите внимание, что ---- +: = 8 =: + ---- переменные больше связаны с C #, чем с Unity.Есть также публичные переменные переменные.Пометка вашей переменной ---- +: = 9 =: + ---- означает, что вы не хотите, чтобы другой скрипт имел доступ к этой переменной.Также есть ---- +: = 10 =: + ---- квалификатор.Пометка вашей переменной ---- +: = 11 =: + ---- означает, что вы хотите, чтобы другие сценарии имели доступ к этой переменной.Иногда вы хотите, чтобы другие скрипты могли обращаться к вашей переменной из другого скрипта, но вы не хотите, чтобы переменная ---- +: = 12 =: + ---- отображалась в редакторе.Вы можете скрыть переменную ---- +: = 13 =: + ---- с помощью атрибута ---- +: = 14 =: + ---- .Это покажет в редакторе:Это не будет отображаться в редакторе:Разве плохо оставить переменные жестко запрограммированными, несмотря на использование [SerializeField] и иметь больше текстовых полей в моем интерфейсе Unity?Да, это в основном плохо, особенно для новых пользователей.Это не должно быть большим делом в течение долгого времени программист Unity и C #.Причина в том, что это плохо, потому что когда у вас есть код ниже:Значением по умолчанию является ---- +: = 18 =: + ---- в редакторе.После сохранения скрипта эта переменная теперь обновляется в редакторе как 5. Проблема в том, что вы можете изменить это значение из редактора на ---- +: = 19 =: + ---- .После того, как вы измените его из редактора, значение в скрипте все равно будет ---- +: = 20 =: + ----, но когда вы запустите его, Unity будет использовать значение, которое вы установили в редакторе, а это ---- +: = 21 =: + ---- .Это может отнять у вас много времени на поиск и устранение неисправностей, что даже не является проблемой только потому, что в редакторе используется другое значение, которое задается в то время, как вы ожидаете использовать значение по умолчанию, заданное в сценарии.Единственный способ для переменной ---- +: = 22 =: + ---- сбросить значение по умолчанию ---- +: = 23 =: + ----, это когда вы либо переименуете переменнуюпеременная к чему-то другому или сбросьте его из редактора.Он даже не изменится, даже если вы измените значение с ---- +: = 24 =: + ---- на ---- +: = 25 =: + ---- из скрипта.Он должен быть переименован или сброшен из редактора.Это стоит знать, но когда вы привыкнете к Unity, вам не придется об этом беспокоиться.
ответил Programmer 7 32018vEurope/Moscow11bEurope/MoscowWed, 07 Nov 2018 18:27:25 +0300 2018, 18:27:25
0
Атрибут [SerializeField] используется для пометки непубличных полей как сериализуемых: таким образом, Unity может сохранять и загружать эти значения (все открытые поля по умолчанию сериализуются), даже если они не являются открытыми.Это все, что он делает.Вы используете это, когда хотите этого.
ответил Draco18s 7 32018vEurope/Moscow11bEurope/MoscowWed, 07 Nov 2018 18:25:35 +0300 2018, 18:25:35

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132