隋唐笔记之从Unity应用开发中获得的static与单例模式

Static

public class RoleManager
{
public static List<GameObject> list;
}

单例模式

public class RoleManager
{
   private ()
  {
  }
  private static RoleManager _instance;
  public static RoleManager Instance
  {
    get
    {
       if(_instance == null)
       {
         _instance =new RoleManager();
       }
       return _instance;
    }
  }
  public List<GameObject> list;
}

生命周期

  • static【从程序运行到结束】:使用static修饰的成员变量,不管你调用它,还是不调用,它都会在最开始时加载在内存中,可以认为它是一种独立于类的存在。
  • 单例【从产生类的实体到消亡】:单例模式的成员变量,和普通的类一样,都是从类实体的创建开始才具有了生命,不同的是,单例模式它保证了对外调用时始终作用于一个对象。
    在Unity中显示的特性
  • 场景转换、物体删除、脚本删除不会影响静态成员变量,其始终存在。今天在开发一个小功能时,在一个脚本中的Awake阶段中获得的GameObject添加到另一个脚本的静态变量List中,这使我再次加载该场景中,再次添加了重复的GameObject。刚开始想到的是在Awake阶段将GameObject添加到一个单例模式下的成员变量List中,这样毫无疑问会出错,因为在这个时候该类的List还没有被加载,所以选择了静态List,因为它始终在普通的类之前被加载到,无需考虑到它的存在性。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值