Unityにバグがあります。Unityシングルトンパターン
私たちはしばしばゲームマネージャーのようなシングルトンオブジェクトを使用します。これを行うには2通りの方法があります。
一つは次のようにシャープなクラスC Singleton.csを使用することです。その後、
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>();
}
}
や人気の意見では
GamaManager : Singleton<GameManager>
として私たちのGameManagerを導き出し、この方法は、特に上、CPUを消費しますUnityはシングルトンで言及されているInitializeメソッドを使用するために非常に多くのオブジェクトの階層を反復処理する必要があります。その何度も何度も同じコードを書くように、
GameManager : MonoBehaviour
{
public static GameManager Instance { get; private set; }
void Start()
{
Instance = this;
}
}
しかし、私は思う:
単純なアプローチは、プライベートインスタンスを作成してスタートまたはアウェイクでそれを初期化することです。誰もこれに対してよりクリーンなアプローチを提案できますか?
。 – Jajan