为避免来反复写单例模式,在框架中构建一个单例模板,需要用的地方直接继承就可。
基本要求
- 单例模式必须继承自MonoBehaviour。
- 由于Unity中利用单例模式需要用到Awake(),因此,对于继承关系的模板,需要对Awake进行修饰为protected,这样继承后的模板才能使用Awake,因为继承关系只能访问public和protected修饰的方法。同时为了能在子类中修改,还要对Awake加上virtual修饰,便于子类修改。
完整代码
public abstract class Singleton<T> : MonoBehaviour
where T : MonoBehaviour {
private static T m_instance = null;
public static T Instance {
get { return m_instance; }
}
protected virtual void Awake() {
m_instance = this as T;
}
}
使用方法
在需要使用模板的地方,继承此模板,如下代码:
public class XXX : Singleton<XXX>
网友评论