Powiedzmy, że mam zmienną o nazwie buttontype, Buttonktóra jest oczywiście System.Serializable.
Chcę, aby ta zmienna była przypisywalna przez inspektora, więc robię to public:
public class SomeScript : MonoBehaviour{
public Button button;
}
Co daje mi to:
Teraz chcę, aby kod był czysty i bezpieczny (zorganizowany) i istnieje prawdziwy powód, dla którego muszę zachować enkapsulację.
Wiem, że istnieje wiele sposobów pobierania składników w środowisku wykonawczym, takich jak transform.Find("Some/Genius/TypeUnsafe/Path")lub GameObject.Find("3 seconds scene iteration").GetComponent(...).chcę tego uniknąć.
Jak mieszać zmienną private accessz nią public accessw inspektorze?
UI/ API MVC/ MVVMdla ogromnej aplikacji (właściwie klienta gry) i musiałem oddzielić UIod API. Musiałem po prostu przypisać wartości przez inspektora, bo po prostu - nie ma innego wyjścia. Find()metody są niebezpieczne dla typu i łatwiej jest łączyć rzeczy poprzez przeciąganie i upuszczanie. Naprawdę, bardzo ciężko jest zbudować klasyczne środowisko OOP Unityi trzeba szukać takich hackerskich rzeczy.

privatetak naprawdę nie ma na celu uniemożliwiać stronom trzecim uzyskania dostępu do pola, ma na celu dać możliwość powiedzenia: „nie patrz za zasłonę na to, co naprawdę robię” - to w większości sposób uniemożliwić ci dostęp do niego.