学习了Unity单例

一直觉得自己了解单例,可是看到下面这种 不觉得别人的设计模式就是6,
先来看代码
using UnityEngine;
using System.Collections;

//一个继承了MonoBehaviour的泛型类
public class Singleton : MonoBehaviour where T: class {

//下面几行代码应该比较熟悉
private static T instance = null;
public static T Instance {
    get {
        if (instance == null)
        //这行就是利用泛型来讲制定类型脚本挂在物体上
            instance = SingletonManager.Go.AddComponent (typeof(T)) as T;
        return instance;
    }
}
public static void Instantiate () {
    instance = Instance;
}

public Singleton () {
    instance = this as T;
}

}

//一个单例的管理类
public class SingletonManager {

private static GameObject go = null;

public static GameObject Go {
    get {
        if (go == null) {
            go = new GameObject ("Singleton");
            Object.DontDestroyOnLoad (go);
        }
        return go;
    }
}

}

下面具体来看个继承的类(我觉得贴代码就行了 都不用解释 )
public class AudioPlayer : Singleton {

….
}

若要将它单利 在多个场景中只有一个 就可以
直接
AudioPlayer.Instantiate ();

这里记下笔记

发布了38 篇原创文章 · 获赞 14 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/sinat_23156865/article/details/56513895