1.单例模式,如下
using UnityEngine;
using System.Collections;
public class Singleton<T> : MonoBehaviour where T : MonoBehaviour
{
/**
Returns the instance of this singleton.
*/
private static T _instance;
public static T Instance
{
private set
{
_instance = value;
}
get
{
if (_instance == null)
_instance = GameObject.FindObjectOfType<T>();
if (_instance == null)
Debug.LogError(typeof(T) + " Instance is null");
return _instance;
}
}
protected virtual void OnDestroy()
{
Instance = null;
}
}
2.使用 继承于上面的代码 例子如下(这是个配置表的类,一般键值转换要弄一个单例类,互相不影响,这个右后有空再说,这边只是举个例子如何使用单例)
用的结构public class DataController : Singleton
public class DataController : Singleton<DataController> {
public KeyValue _keyValue;
public KeyValueConfigure[] keyValue;
public KeyValueConfigure ChooseWhichData(int id)
{
return keyValue[id];
}
public GameObject ChooseGeneratorPrefabs(ObstacleType name)
{
foreach(var o in _keyValue._list)
{
if(o.type == name)
{
return o.prefabs;
}
}
return null;
}
}
3.调用 :
DataController.Instance.ChooseWhichData(0);