Unity中的GameObject更新顺序

时间:2016-03-27 20:19:43

标签: unity3d unity5

Unity Manual描述了调用脚本函数的顺序。但是,我想知道是否有关于在Unity中考虑GameObjects本身的顺序的规则。

GameObjects基本上是Unity场景图的节点,并且(假设场景本身是根节点)它们形成了一个树。我想知道这个树结构是否对游戏对象的顺序施加了任何规则。

如前所述,该手册描述Awake()始终在Start()之前调用,Update()始终在第一次调用Start()之前调用,依此类推。但是,这些关系及时(大多数)是在单个GameObject上的单个脚本的范围内给出的。我想知道是否还有一条规则说明在场景中的所有GameObjects上调用Awake()(或任何其他方法)的顺序。

具体来说我想知道:

  1. 父母在孩子出生之前是否经常被考虑?
  2. 兄弟姐妹是否按照他们在场景图中显示的顺序进行考虑?
  3. 脚本执行顺序是仅在单个GameObject的范围内强制执行,还是考虑所有GameObjects?

1 个答案:

答案 0 :(得分:3)

我在Unity中构建了一个小型测试项目,它基本上由一个3x3x3的GameObjects树组成,每个都有3个脚本。

我找到了以下答案:

  1. 否。一些游戏对象可以在他们的父母之前考虑,而一些父母可以在他们的孩子之前考虑。重新加载场景或操纵场景图时,此顺序可能会发生变化。
  2. 否。兄弟姐妹可以按任何顺序更新。重新加载场景或操纵场景图时,此顺序可能会发生变化。
  3. 强制执行场景中的所有GameObject。如果SEO将脚本A设置为在脚本B之前执行,则在脚本B的任何实例之前将考虑脚本A的所有实例。这意味着,A的所有实例在任何B调用他们的Awake()之前调用他们的Start(),然后A的所有实例在任何B实例调用他们的Start()之前调用他们的{{1}}等等上。