今天在写一个 单例类的时候,VS默认将改类继承自MonoBehavior,我本来的想法是要写一个数据管理类,不需要挂在物体中也能使用该类管理数据:
所以我的单例 写法是这样的
private static GameInfoManager _instance;
public static GameInfoManager Instance {
get {
if (_instance == null) {
_instance = new GameInfoManager();
}
return _instance;
}
}
然后我往这个单例中的字典存入数据的时候,发现存不上,断点只能发现每存入一次的时候是存上了,下次使用,数量又会变为0,也没有调用Clear方法。捋了两次逻辑,没有发现任何问题,也没有报错。
然后看警告的时候,发现了有关于这个类的警告,顺着警告发现了改单例的写法不能适用于继承自MonoBehavior的类,这是由于继承自MonoBehavior的类不能通过New来生成,只能通过AddComponent添加。去掉了基类就正常了。
继承自MonoBehavior的类的单例写法应该是
public class GameUIManager : MonoBehaviour
{
public static GameUIManager Instance;
private void Awake()
{
Instance = this;
}
}
特此记录一下..........