Aby rozwinąć odpowiedź Tetrad, rozważ taki skrypt:
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.
}
Następnie możesz utworzyć obiekt o nazwie „GameSystem” w katalogu głównym sceny. Jedynymi komponentami, jakie miałby, byłby wbudowany komponent transformacji (ustaw jego położenie na początek, jego obrót na tożsamość i jego skalę na jeden; nie, że to ma znaczenie, ale jest to dobra praktyka). Dołączono składnik GameSystem do tego obiektu.
Możesz teraz uzyskać dostęp do swojego obiektu globalnego za pomocą GameSystem.Instance.blah (). Metody obsługi zdarzeń są wywoływane automatycznie przez Unity, ponieważ wywodzi się z MonoBehavior i istnieje jako komponent. Możesz dodać do niego pola, które odnoszą się do innych obiektów lub komponentów gry i połączyć je w widoku hierarchii obiektów Unity.
Tak, to wszystko jest trochę „dziwne”. To może być trochę brudne, gdy trzeba stworzyć obiekt (który ma nawet transformację), który zawsze jest tylko globalnym singletonem. Tego właśnie wymaga Unity do tworzenia globalnych obiektów, które otrzymują komunikat o aktualizacji i można nimi manipulować za pomocą domyślnego edytora właściwości Unity.
Po prostu utwórz obiekt menedżera, na którym umieścisz ten skrypt. Może stwórz zmienną statyczną dla skryptu, który przypisujesz,
Awake
aby mieć łatwy globalny dostęp do niego.źródło