我认为我误解了 Unity3d 的层次结构系统
I think I'm misinterpreting Unity3d's Hierarchy system
所以我有一个 class 叫做 Enemy、Player 和 Gamemanager。我设置了我的 Unity Hierarchy 系统(在名称 "Hierarchy" 下的 unity 左侧),如下所示:
Enemy (1)
Enemy (2)
Enemy (3)
Enemy (4)
Enemy (5)
Player (1)
GameManager;
但是当我把 void Start () { Debug.Log(this);}
(放在每个 classes 上)时,我得到这个
Enemy (1)
Enemy (5)
Enemy (3)
GameManager;
Enemy (2)
Player (1)
Enemy (4)
什么给了?如果层次结构在加载对象时不发生变化,那么它有什么意义呢?无论如何,当我做 void Start (Debug.Log(this))
时,我是否可以做到这一点,以便获得第一个结果?
如果您遵循良好的编程习惯,执行顺序应该无关紧要。
但是,有很多新手游戏开发者使用 Unity,这或许可以解释为什么他们将脚本执行顺序添加到项目设置中。
By default, the Awake, OnEnable and Update functions of different
scripts are called in the order the scripts are loaded (which is
arbitrary). However, it is possible to modify this order using the
Script Execution Order settings (menu: Edit > Project Settings >
Script Execution Order).
可在此处获取更多信息:
http://docs.unity3d.com/Manual/class-ScriptExecution.html
所以我有一个 class 叫做 Enemy、Player 和 Gamemanager。我设置了我的 Unity Hierarchy 系统(在名称 "Hierarchy" 下的 unity 左侧),如下所示:
Enemy (1)
Enemy (2)
Enemy (3)
Enemy (4)
Enemy (5)
Player (1)
GameManager;
但是当我把 void Start () { Debug.Log(this);}
(放在每个 classes 上)时,我得到这个
Enemy (1)
Enemy (5)
Enemy (3)
GameManager;
Enemy (2)
Player (1)
Enemy (4)
什么给了?如果层次结构在加载对象时不发生变化,那么它有什么意义呢?无论如何,当我做 void Start (Debug.Log(this))
时,我是否可以做到这一点,以便获得第一个结果?
如果您遵循良好的编程习惯,执行顺序应该无关紧要。
但是,有很多新手游戏开发者使用 Unity,这或许可以解释为什么他们将脚本执行顺序添加到项目设置中。
By default, the Awake, OnEnable and Update functions of different scripts are called in the order the scripts are loaded (which is arbitrary). However, it is possible to modify this order using the Script Execution Order settings (menu: Edit > Project Settings > Script Execution Order).
可在此处获取更多信息: http://docs.unity3d.com/Manual/class-ScriptExecution.html