Скажімо, у мене є змінна назва 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насправді не має на меті перешкодити третій стороні отримати доступ до поля, це має на меті запропонувати спосіб сказати "не дивись за завісу на те, що я насправді роблю" - тобто це здебільшого спосіб не дозволяють вам отримати доступ до нього.