Tetrad'ın cevabını genişletmek için şöyle bir senaryo düşünün:
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.
}
Daha sonra sahnenizin kök dizininde "GameSystem" adlı bir nesne oluşturabilirsiniz. Sahip olacağı tek bileşenler yerleşik dönüşüm bileşeni olacaktır (konumunu başlangıç noktasına, kimliğe dönüşünü ve ölçeğine göre ayarlayın; önemli değil, ama iyi uygulama). GameSystem bileşenini bu nesneye ekledi.
Artık GameSystem.Instance.blah () yöntemini kullanarak global nesnenize erişebilirsiniz. Olay işleyici yöntemleri, MonoBehavior'dan türediği ve bir bileşen olarak var olduğu için Unity tarafından otomatik olarak çağrılır. Buna, diğer oyun nesnelerine veya bileşenlerine başvuruda bulunan alanlar ekleyebilir ve bunları Unity nesnesi hiyerarşi görünümünde bağlayabilirsiniz.
Evet, bu biraz "garip". Her zaman sadece küresel bir single olan bir nesneyi (hatta dönüşüme sahip) yaratmak zorunda kalmak biraz kirli olabilir. Yine de Unity, bir Güncelleme mesajı alan ve varsayılan Unity özellik düzenleyicisiyle değiştirilebilen genel nesneler oluşturmak için ihtiyaç duyduğu şeydir.