• Unity Pitfall 汇总


    Unity Pitfall 汇总

    1、 当脚本被绑定到一个对象时,一个类对象即会被创建,此意味着此类构造函数会被调用。所以在构造函数中不要调用任何运行时才创建的类。相应的初始化方代码应该移至Start方法中。

    2、需使用UNITY_EDITOR宏来避免在编辑器中调用构造函数。

      

    3、Start()的调用顺序不确定,以下代码,并不能保证EventCenterService.Start方法在DataCenterService.Start前被调用。

      

    4、GetComponentInChildren。

      Returns the component of Type type in the GameObject or any of its children using depth first search.

      Only active components are returned.

      会找当前GO,如果当前GO找不到,则DFS查找子结点,只有activeInHierarchy的对象的component才会返回,这点要特别当心。

    5、在Prefab中设置的public字段,无法在构造函数中引用。通过prefab设置的public字段,只能在start方法开始后引用,否则取不到prefab中的值。

    6、FastBloom 组件在 Adreno320下会引起 Crash。

    7、error x5204。此为Shader错误,若有if语句,可尝试加上/删除else,看看是否能解决此错误。

    8、如果prefab有enum的公开属性,则enum只能在末尾添加新数值,而不能在中间插入,因为Unity的prefab保存的是int,而不是真的enum值。在中间插入的话,会导致所有的enum值错乱。

    9、prefab中若引用代码,则该代码文件的meta文件必须一起提交,否则会出现丢失脚本的问题。

    10、若只想修改子结点相对于父结点的position、rotation,请用localPosition、localRotation来修改。

    11、当协程遇上继承。在override方法中调用base的方法时,如果本身是个协程,则必须调用MoveNext方法。

     12、GameComponent方法非常耗时,下图中,4次调用花费了9.28ms,MBP上环境下的数据。

      

    13、将一对象A设置为DontDestroyOnLoad,若其父对象B没有此设置,则A一样会在切Scene时被移除,因为A的父对象B会被移除。

    14、NGUI中ttf字体必须使用keep crisp选项才能强制不自动换行。

    15、ios/mac下,图片如何会糊,就必须使用ARGB32,即不压缩图片的处理方法。

    16、Application.LoadLevel。

      若连调三次 Application.LoadLevel,则UnityEngine会在后序,每帧依次执行一次清空+OnApplicationLevelLoaded.

  • 相关阅读:
    js面向对象的程序设计 --- 上篇(理解对象)
    js基础 之 引用类型
    js基础之--变量 作用域和内存问题
    js基础心得
    一些转载的知识点
    linux打印指定的行的内容
    R画柱形图和箱线图
    Meerkat软件
    bam文件格式说明
    STAR软件的学习
  • 原文地址:https://www.cnblogs.com/tekkaman/p/3844684.html
Copyright © 2020-2023  润新知