Unity3D的单例模式实现
2014-03-24 23:00
330 查看
游戏中有些数据需要在整个程序lifetime中一直保持,即便切换Scene等,也不能注销。这时就可以使用单例模式Singleton
下面是源自EasyTouch插件中的定义模版单例抽象类
当我们需要一个单例,则
public class TaskManager : MonoSingleton<TaskManager>
{
...
}
下面是源自EasyTouch插件中的定义模版单例抽象类
using UnityEngine; public abstract class MonoSingleton<T> : MonoBehaviour where T : MonoSingleton<T> { private static T m_Instance = null; public static T instance { get { if( m_Instance == null ) { m_Instance = GameObject.FindObjectOfType(typeof(T)) as T; if( m_Instance == null ) m_Instance = new GameObject("Singleton of " + typeof(T).ToString(), typeof(T)).GetComponent<T>(); } return m_Instance; } } private void Awake() { if( m_Instance == null ) m_Instance = this as T; } private void OnApplicationQuit() { m_Instance = null; } }
当我们需要一个单例,则
public class TaskManager : MonoSingleton<TaskManager>
{
...
}
相关文章推荐
- 在Unity3D中基于订阅者模式怎样实现事件机制
- Unity3D中实现简单的电影模式框架
- 在Unity3D中基于订阅者模式实现事件机制
- 游戏开发设计模式之状态模式 & 有限状态机 & c#委托事件(unity3d 示例实现)
- Unity3D的单例模式实现
- 游戏开发设计模式之对象池模式(unity3d 示例实现)
- Unity3D 利用C#实现简单的代理模式Delegate(委托)
- 游戏开发设计模式之对象池模式(unity3d 示例实现)
- Unity3d中C#单例模式实现
- Unity教程之-Unity3d中基于订阅者模式实现事件机制
- Unity3D 游戏引擎之利用C#实现代理模式
- Unity3D之利用C#实现代理模式
- Unity3d基于订阅者模式实现事件机制_解决装箱拆箱问题和注册的监听事件单一问题
- 游戏开发设计模式之命令模式(unity3d 示例实现)
- Unity3d 单例模式的实现
- 游戏开发设计模式之命令模式(unity3d 示例实现)
- Unity3D中多种单例模式的实现方式
- Unity3D中实现简单的电影模式框架
- 游戏开发设计模式之子类沙盒模式(unity3d 示例实现)
- Unity3D学习之如何利用C#实现代理模式