通常你可以这样创建一个Singleton:
public class Single
{
public static Single _instance;
public static Single GetInstance(){...}
}
问题是当你在Unity中推广MonoBehaviour类时如何创建它?
public class Single : MonoBehaviour
{
}
上面的常规代码无效。
编辑:是的问题是我不能在MonoBehaviour上打电话给新人。
答案 0 :(得分:3)
对于未来的帖子,您会发布为什么或如何无法发挥作用。但是,我过去遇到过这个问题,所以我知道它是什么。您无法使用_instance
初始化new
,因为您无法在 MonoBehaviour 中呼叫new
。
在你的虚空Awake()
中添加以下行:
void Awake()
{
_instance = this;
}
额外代码
显然,您的GetInstance()
功能现在看起来会略有不同。请注意,我们不再像通常那样检查实例是否等于null。
public static Single GetInstance()
{
return _instance.
}
答案 1 :(得分:-1)
我编写了一个单例类,可以轻松创建单例对象。它是一个MonoBehaviour脚本,所以你可以使用Coroutines。
下载this class,将其添加到您的项目中,然后创建扩展它的单例:
public class MySingleton : Singleton<MySingleton> {
protected MySingleton () {} // guarantee this will be always a singleton only - can't use the constructor!
public string globalVar;
void Awake () {
Debug.Log("Awoke Singleton Instance: " + gameObject.GetInstanceID());
}
}
现在你的MySingleton类是一个单例,你可以通过Instance调用它:
MySingleton.Instance.globalVar = "A";
Debug.Log ("globalVar: " + MySingleton.Instance.globalVar);
以下是完整的教程:http://www.bivis.com.br/2016/05/04/unity-reusable-singleton-tutorial/