Unity3d Unity中的游戏对象更新顺序

Unity3d Unity中的游戏对象更新顺序,unity3d,unity5,Unity3d,Unity5,描述调用脚本函数的顺序。然而,我想知道是否有关于游戏对象本身被认为是统一的顺序的规则 游戏对象基本上是Unity场景图的节点(假设场景本身是根节点),它们形成一棵树。我想知道树结构是否对游戏对象的考虑顺序施加了任何规则 如前所述,本手册描述了总是在Start()之前调用Awake(),这总是在第一次调用Update()之前调用,依此类推。然而,这些时间关系(大部分)是在单个游戏对象上的单个脚本范围内给出的。我想知道是否还有一条规则规定了对场景中所有游戏对象调用Start()(或任何其他方法)的顺

描述调用脚本函数的顺序。然而,我想知道是否有关于游戏对象本身被认为是统一的顺序的规则

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

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

我特别想知道:

  • 在孩子出生之前,父母是否总是被考虑过
  • 兄弟姐妹在场景图中的显示顺序是否相同
  • 仅在单个游戏对象的范围内强制执行脚本执行顺序,还是考虑所有游戏对象?<李>
    我在Unity中构建了一个小测试项目,它基本上由一个3x3x3的游戏对象树组成,每个游戏对象有3个脚本

    我找到了以下答案:

  • 不。有些游戏对象可以在其父母之前考虑,而有些父母可以在其子女之前考虑。在重新加载场景或操纵场景图时,此顺序可能会更改
  • 不可以。兄弟姐妹可以按任何顺序更新。重新加载场景或操纵场景图形时,此顺序可能会更改
  • 它在场景中的所有游戏对象上强制执行。如果SEO将脚本A设置为在脚本B之前执行,那么在创建脚本B的任何实例之前,将考虑脚本A的所有实例。也就是说,在任何B调用其
    唤醒()
    之前,A的所有实例调用其
    唤醒()
    ,然后在任何B的实例调用其
    启动()
    之前,A的所有实例调用其
    启动()
    ,依此类推

  • 这可能也很有趣:我是想告诉你,你可以很容易地通过一些对象、脚本和子对象的基本设置获得答案,然后我意识到你将答案与问题一起发布了。现在我的问题来了,既然这是一个很简单的问题,为什么要问呢?这是一个困扰我多年的问题,现在我终于去测试了它,我认为它可能值得分享,因为我无法找到任何记录在案的答案。我敢肯定,以前它会让很多人头疼,尤其是在重新加载场景时,顺序会发生变化。比如“昨晚我关上它时它工作了,为什么今天不工作?”我会说,如果你需要对象A在对象B之前发生,你有一个关系,所以你不能再依赖Unity更新系统,A必须给B打电话。你自己说的,重新加载可能会改变顺序,所以知道下一次可能会出错意味着如果你一直依赖Unity Update,知道它总有一天会失败,你就是在胡闹。是的,这就是我给出的答案得出的结论。在我得到答案之前,我无法得出那个结论。Unity保证按照场景图定义的顺序绘制所有UI元素:按照层次结构中的显示顺序绘制同级元素,并在父元素之后绘制子元素。此外,游戏对象形成一个场景图,因此它们的变换不能在父对象的变换完成之前计算。我只是自然而然地认为脚本的执行遵循同样的规则。你不能编程,所以这很重要。