Скажем , у меня есть переменная button
типа , Button
которая, конечно System.Serializable
.
Я хочу, чтобы эта переменная была назначена через инспектор, поэтому я делаю это public
:
public class SomeScript : MonoBehaviour{
public Button button;
}
Что дает мне это:
Теперь я хочу сохранить код в чистоте и безопасности (организованным), и есть реальная причина, по которой мне нужно сохранить инкапсуляцию.
Я знаю, что есть несколько способов получения компонентов во время выполнения, например, transform.Find("Some/Genius/TypeUnsafe/Path")
или GameObject.Find("3 seconds scene iteration").GetComponent(...).
я хочу избежать этого.
Как мне смешать переменную private access
с этим public access
в инспекторе?
UI
/ API
MVC
/ MVVM
шаблон для огромного приложения (игра клиент на самом деле) , и я должен был отделить UI
от API
. Мне нужно было просто присвоить значения через инспектор - другого пути нет. Find()
Методы небезопасны, и их проще соединять, перетаскивая. Это действительно очень сложно создать классический OOP-фреймворк, Unity
и вы должны искать такие хакерские вещи.
private
на самом деле не предназначен для того, чтобы помешать третьему лицу получить доступ к полю, он предназначен для того, чтобы дать возможность сказать: «Не смотри за кулисы на то, что я на самом деле делаю», то есть это в основном способ помешать вам получить доступ к нему.