您的位置:首页 > 移动开发 > Unity3D

Unity3D的单例模式实现

2014-03-24 23:00 330 查看
游戏中有些数据需要在整个程序lifetime中一直保持,即便切换Scene等,也不能注销。这时就可以使用单例模式Singleton

下面是源自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>

{

       ...

}

 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: