关于单例模式,变量赋值后,单例类对应的变量仍然没被修改!!!
在单例模式中,有一个需要注意的小要点,有时候我们调用单例修改其中的属性,但代码执行后发现并没有被修改——归结问题,主要是因为修改的属性和单例中的属性处于不同个对象!!!
解决方法
一般单例是执行有两种情况:
1、手动挂起单例脚本:
在这种情况下,对象已经是存在于场景当中了,那在单例的脚本中给其设置对象用This 在Awake{ }中执行该操作。
```
public static ABManager instance;
private void Awake()
{
instance = this;//这也是最简单实现单例的一种方式
}
```
2、脚本中生成对象自动挂起脚本:
在这种情况下,就不用去手动挂脚本,在单例的接口属性中(Instance)里面给其,创建一个新的对象 (new GameObject),最后再把该脚本以AddCompnent的形式挂在对象上。
```
private static ABManager instance;
public static ABManager Instance
{
get
{
if (instance == null)
{
GameObject go = new GameObject("ABManager");//在场景中创建一个新的对象
instance = go.AddComponent<ABManager>();//把单例脚本挂在对象上
}
return instance;
}
}
## 总结
不管是单例还是其他的,当遇到赋值不起作用,可以先查看操作的是否是同一个对象。