单例分类
根据管理器的生命周期,可以分为整个游戏内存在的和场景内存在的。根据是否需要检查器或协程,得到是否必须继承MonoBehavior,可以分为继承和不继承。这两个问题组合,其中不继承MonoBehavior的一定整个游戏存在。这样就把管理器分为3类:
- 不继承MonoBehavior;
- 继承MonoBehavior;
- 继承MonoBehavior且DontDestroyOnLoad;
继承MonoBehavior且DontDestroyOnLoad如何防止出现多个
看单例是手拖进场景还是代码创建。
手拖则进入场景时如果已经有单例则多余的把自己销毁。
代码创建可以天然防止这个问题。
编辑器、未播放状态调用到单例时单例对象存在但instance没赋值
先
cs
instance= FindObjectOfType<T>();
找一下。