Unity 中的游戏对象更新顺序

Tho*_*ert 5 unity-game-engine unity5

统一手册描述了脚本函数调用的顺序。但是,我想知道是否有关于游戏对象本身在 Unity 中被考虑的顺序的任何规则。

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

如前所述,本手册描述了Awake()总是被调用之前,Start()它总是在第一次调用之前调用Update()等。然而,这些时间关系(大部分)是在单个游戏对象上的单个脚本范围内给出的。我想知道是否还有规则说明Start()在场景中的所有游戏对象上调用(或任何其他方法)的顺序。

具体我想知道:

  1. 父母总是先于孩子考虑吗?
  2. 兄弟姐妹是否按照它们在场景图中的显示顺序来考虑?
  3. 脚本执行顺序是仅在单个游戏对象的范围内强制执行,还是考虑所有游戏对象?

Tho*_*ert 7

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

我找到了以下答案:

  1. 不可以。有些游戏对象可以在其父母之前被考虑,而有些父母可以在其孩子之前被考虑。当重新加载场景或操作场景图时,这个顺序可能会改变。
  2. 不可以。同级可以按任意顺序更新。重新加载场景或操作场景图时,此顺序可能会发生变化。
  3. 它对场景中的所有游戏对象强制执行。如果 SEO 将脚本 A 设置为在脚本 B 之前执行,则脚本 A 的所有实例将在脚本 B 的任何实例之前被考虑。意思是, A 的所有实例Awake()在任何 B 调用它们之前调用它们Awake(),然后 A 的所有实例在Start()B 的任何实例调用它们之前调用它们Start(),依此类推。