Es ist nur eine Frage, die mich auf Unity stört.Einheit Singleton Muster
Wir verwenden oft Singleton-Objekte wie Game-Manager und so und es gibt zwei Möglichkeiten, dies zu erreichen.
One ist eine Singleton.cs Cis-Klasse wie folgt zu verwenden:
using System;
using System.Linq;
using UnityEngine;
public class Singleton<T> : MonoBehaviour where T : MonoBehaviour
{
static T instance;
DateTime BirthTime;
public static T Instance
{
get
{
if (instance == null)
Initialize();
return instance;
}
}
private void Awake()
{
BirthTime = DateTime.Now;
}
public static void Initialize()
{
if (instance == null)
instance = FindObjectOfType<T>();
}
}
Und dann leiten unsere GameManager Als
GamaManager : Singleton<GameManager>
In landläufigen Meinung, ist diese Methode CPU raubend, vor allem auf Mobile, da Unity die Hierarchie so vieler Objekte durchlaufen muss, um die in Singleton erwähnte Initialize-Methode zu verwenden.
Ein einfacher Ansatz ist privat Instanz zu erstellen und initialisieren es in Start- oder Awake als:
GameManager : MonoBehaviour
{
public static GameManager Instance { get; private set; }
void Start()
{
Instance = this;
}
}
Aber ich denke, es ist wie gleichen Code wieder zu schreiben und wieder. Kann jemand einen saubereren Ansatz vorschlagen?
ich nur eine andere Art und Weise denken. Verwenden von 'GetComponent()' anstelle von 'FindObjectOfType ()' –
Jajan