Скажем , у меня есть переменная 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на самом деле не предназначен для того, чтобы помешать третьему лицу получить доступ к полю, он предназначен для того, чтобы дать возможность сказать: «Не смотри за кулисы на то, что я на самом деле делаю», то есть это в основном способ помешать вам получить доступ к нему.