这个模式不一定 符合单例模式的意思,因为我是菜鸟,在实践中摸索前进。
unity3d 脚步之间相互调用的话,一开始写的时候是获取到那个script,
getcompenont<"script">().Do()
Do() 是个方法。
现在 用 单例模式的话 就会简单一些,具体性能和运算量 我不知道。
public class GameManager:MonoBehaviour
{
public static GameManager instance;
void Awake()
{
instance= this;
}
public void Do()
{
Debug.Log("单例模式");
}
}
public class Singleton :MonoBehaviour
{
void Start()
{
GameManager.instance.Do();
}
}
上面写的每个类都需要些一个Awake(), 代码重用,进行整理一下。
public class Singleton<T> : IInstance where T : IInstance, new()
{
private static T instance;
public static T Instance
{
get {
if (instance == null)
{
instance = new T();
instance.OnInstance();
}
return instance;
}
}
public virtual void OnInstance()
{
}
}
public interface IInstance {
/// <summary>
/// 使用前 初始化数据
/// </summary>
void OnInstance();
}
public class GameManager:Singleton<GameManager>
{
...........
}