zoukankan      html  css  js  c++  java
  • unity中的构造函数

    避免使用构造函数 不要在构造函数中初始化任何变量,使用Awake或Start实现这个目的。即使是在编辑模式中Unity也自动调用构造函数,这通常发生在一个脚本被编译之后,因为需要调用构造函数来取向一个脚本的默认值。构造函数不仅会在无法预料的时刻被调用,它也会为预设或未激活的游戏物体调用。”

    MonoBehaviour有两个生命周期,一个是作为C#对象的周期,一个是作为Component的周期。

    构造函数代表第一个,Awake代表第二个。

    Editor环境下Editor的代码和脚本代码在同一个AppDomain里,对象的生命周期会表现的跟Player环境下不一样。比如Editor中构造函数被调用的次数和时机跟build出来的游戏不一样,这样就不容易保证正确性。

    另外一个关键原因是构造函数是在Unity内部的Loading线程上执行的,一是不能使用Unity API,二是需要考虑同步问题,就更难保证正确了。

    所以没什么事还是别用构造函数,readonly字段之类只能在构造阶段初始化的成员,尽量不要用,设计上需要用也要保证初始化代码尽可能简单。


    作者:权然
    链接:https://www.zhihu.com/question/24701230/answer/50546298
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 相关阅读:
    @Transactional事务不起作用原因
    Date类型错误
    springboot整合mybatis(注解)
    springcloud(六):Spring Cloud 配置中心采用数据库存储配置内容
    Mybatis系列(二)配置
    spring boot日志logback输出
    spring boot不使用resoures而是建立一个conf
    spring boot使用guava缓存
    OrCAD生成网表
    OrCAD创建原理图符号图
  • 原文地址:https://www.cnblogs.com/mcyushao/p/9193088.html
Copyright © 2011-2022 走看看