unity3d 使用检查器拖放引用有什么缺点吗?

hmtdttj4  于 2022-11-16  发布在  其他
关注(0)|答案(1)|浏览(117)

我知道这比通过脚本引用要容易得多,但是通过脚本引用结果比拖放更方便,这有什么缺点吗?
通过检查器对我的gameObjs的引用并没有给予我太多的信心,它能引用丢失的代码吗?我必须再次引用我丢失的所有东西,但如果是一个脚本引用,它会找到并选择我做得很好,我想。
什么是最好的?检查员参考还是脚本参考?因为我读到的地方总是有用户说检查员参考是最好的,未来,我不明白什么问题可以给予我,这让我担心。
感谢您的回复

bf1o4zei

bf1o4zei1#

缺点是,如果你想切换引擎,你必须重新发明Unity的(去)序列化系统来迁移那些引用。除此之外,通过拖放引用是Unity的标准。
如果某人有关于哪些对象可以/不可以在哪些对象上引用的必要信息,他们就不必担心丢失现有引用,而引用他们可以通过检查器从脚本中引用的数据将被认为是不好的做法。
(实际上,唯一的规则是场景对象可以引用预制件和场景对象,但预制件只能引用其他预制件或预制件本身的特定部分,如子对象)
使用GetChild将引用分配给公共字段就是一个不好的做法:

  1. public GameObject TextBox;
  2. public GameObject ConfirmButton;
  3. void Awake() {
  4. TextBox = transform.GetChild(0);
  5. ConfirmButton = transform.GetChild(1);
  6. }

这在很多方面都是不好的,包括:
1.如果更改对象在层次结构中的顺序,则此操作将中断
1.您实际上并没有与UnityEngine分离,因为您使用的是它的层次结构系统
1.您正在为公共字段赋值。这可能会使您和/或项目中的其他工作人员感到困惑,以为公共字段的值即使在对象示例化之后也会保持不变。(protip:一个好的经验法则是使检查器可见的所有字段不可变,如在对象的整个生存期内不可更改。
注意,有些编程模式可以通过脚本传递引用来定制对象的行为或外观。这些都很好!

展开查看全部

相关问题