टेट्राद के उत्तर पर विस्तार करने के लिए, इस तरह से एक स्क्रिप्ट पर विचार करें:
public class GameSystem : MonoBehavior
{
private GameSystem m_Instance;
public GameSystem Instance { get { return m_Instance; } }
void Awake()
{
m_Instance = this;
}
void OnDestroy()
{
m_Instance = null;
}
void Update()
{
// global game update logic goes here
}
void OnGui()
{
// common GUI code goes here
}
// etc.
}
फिर आप अपने दृश्य की जड़ में "GameSystem" नामक एक वस्तु बना सकते हैं। यह केवल घटक होगा जिसमें अंतर्निर्मित रूपांतरण घटक होगा (इसकी स्थिति की उत्पत्ति, पहचान के लिए इसका रोटेशन और एक पैमाने पर एक; ऐसा नहीं है कि यह मायने रखता है, लेकिन यह अच्छा अभ्यास है)। उस ऑब्जेक्ट के लिए GameSystem घटक संलग्न।
अब आप केवल GameSystem.Instance.blah () का उपयोग करके अपनी वैश्विक वस्तु तक पहुंच सकते हैं। इसकी घटना हैंडलर विधियों को यूनिटी द्वारा स्वचालित रूप से आमंत्रित किया जाता है क्योंकि यह मोनोहेवियर से निकलता है और एक घटक के रूप में मौजूद होता है। आप इसमें फ़ील्ड जोड़ सकते हैं जो अन्य गेम ऑब्जेक्ट्स या घटकों को संदर्भित करता है और उन्हें एकता ऑब्जेक्ट पदानुक्रम दृश्य में जोड़ता है।
हाँ, यह सब थोड़ा "अजीब" है। यह एक वस्तु (कि यहां तक कि एक परिवर्तन है) बनाने के लिए थोड़ा गंदा महसूस कर सकता है जो हमेशा सिर्फ एक वैश्विक सिंगलटन है। हालांकि यह है कि एकता को वैश्विक वस्तुओं को बनाने की आवश्यकता है जो अद्यतन संदेश प्राप्त करते हैं और डिफ़ॉल्ट यूनिटी संपत्ति संपादक के साथ जोड़-तोड़ कर रहे हैं, हालांकि।