单例、调用单例改变其中属性值,单例执行时该属性值却没变化!!!

关于单例模式,变量赋值后,单例类对应的变量仍然没被修改!!!

在单例模式中,有一个需要注意的小要点,有时候我们调用单例修改其中的属性,但代码执行后发现并没有被修改——归结问题,主要是因为修改的属性和单例中的属性处于不同个对象!!!

解决方法

一般单例是执行有两种情况:

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;
    }
}
## 总结
	不管是单例还是其他的,当遇到赋值不起作用,可以先查看操作的是否是同一个对象。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值