Unity3d Unity中的游戏对象更新顺序
描述调用脚本函数的顺序。然而,我想知道是否有关于游戏对象本身被认为是统一的顺序的规则 游戏对象基本上是Unity场景图的节点(假设场景本身是根节点),它们形成一棵树。我想知道树结构是否对游戏对象的考虑顺序施加了任何规则 如前所述,本手册描述了总是在Unity3d Unity中的游戏对象更新顺序,unity3d,unity5,Unity3d,Unity5,描述调用脚本函数的顺序。然而,我想知道是否有关于游戏对象本身被认为是统一的顺序的规则 游戏对象基本上是Unity场景图的节点(假设场景本身是根节点),它们形成一棵树。我想知道树结构是否对游戏对象的考虑顺序施加了任何规则 如前所述,本手册描述了总是在Start()之前调用Awake(),这总是在第一次调用Update()之前调用,依此类推。然而,这些时间关系(大部分)是在单个游戏对象上的单个脚本范围内给出的。我想知道是否还有一条规则规定了对场景中所有游戏对象调用Start()(或任何其他方法)的顺
Start()
之前调用Awake()
,这总是在第一次调用Update()
之前调用,依此类推。然而,这些时间关系(大部分)是在单个游戏对象上的单个脚本范围内给出的。我想知道是否还有一条规则规定了对场景中所有游戏对象调用Start()
(或任何其他方法)的顺序
我特别想知道:
我在Unity中构建了一个小测试项目,它基本上由一个3x3x3的游戏对象树组成,每个游戏对象有3个脚本 我找到了以下答案:
唤醒()
之前,A的所有实例调用其唤醒()
,然后在任何B的实例调用其启动()
之前,A的所有实例调用其启动()
,依此类推这可能也很有趣:我是想告诉你,你可以很容易地通过一些对象、脚本和子对象的基本设置获得答案,然后我意识到你将答案与问题一起发布了。现在我的问题来了,既然这是一个很简单的问题,为什么要问呢?这是一个困扰我多年的问题,现在我终于去测试了它,我认为它可能值得分享,因为我无法找到任何记录在案的答案。我敢肯定,以前它会让很多人头疼,尤其是在重新加载场景时,顺序会发生变化。比如“昨晚我关上它时它工作了,为什么今天不工作?”我会说,如果你需要对象A在对象B之前发生,你有一个关系,所以你不能再依赖Unity更新系统,A必须给B打电话。你自己说的,重新加载可能会改变顺序,所以知道下一次可能会出错意味着如果你一直依赖Unity Update,知道它总有一天会失败,你就是在胡闹。是的,这就是我给出的答案得出的结论。在我得到答案之前,我无法得出那个结论。Unity保证按照场景图定义的顺序绘制所有UI元素:按照层次结构中的显示顺序绘制同级元素,并在父元素之后绘制子元素。此外,游戏对象形成一个场景图,因此它们的变换不能在父对象的变换完成之前计算。我只是自然而然地认为脚本的执行遵循同样的规则。你不能编程,所以这很重要。