1.脚本函数执行顺序

Unity脚本函数的执行顺序和脚本的编译顺序

Unity脚本函数的执行顺序和脚本的编译顺序

2.Awake描述

        Awake()在MonoBehavior创建后就立刻调用,在脚本实例的整个生命周期中,Awake函数仅执行一次;如果游戏对象(即gameObject)的初始状态为关闭状态,那么运行程序,Awake函数不会执行;如果游戏对象的初始状态为开启状态,那么Awake函数会执行;值得注意的一点是,Awake函数的执行与否与脚本实例的状态(启用或禁用)并没有关系,而是与脚本实例所绑定的游戏对象的开关状态有关。

Unity脚本函数的执行顺序和脚本的编译顺序

3.Scripts Execution Order对脚本执行顺序的影响

在Inspector中设置脚本执行的先后顺序,只能改变同一层级的函数的先后顺序,并不是决定某一脚本完全执行完毕之后再执行另外一个脚本,如下图:仍然是先全部执行完Awake,再执行Start,再执行Upade,最后执行LateUpdate

Unity脚本函数的执行顺序和脚本的编译顺序

结果:

Unity脚本函数的执行顺序和脚本的编译顺序

4.特殊文件夹对脚本函数编译顺序的影响

首先,需要注意特殊文件夹只影响脚本的编译顺序,并不影响脚本的执行顺序;影响编译顺序最大的问题是,只能后编译的引用先编译的,先编译的无法引用后编译的,例如:我将Ex2放进Standard Assets文件夹,则在Ex2中无法引用Ex1、Ex3中的脚本函数,但是Ex1和Ex3仍然可以正常引用Ex2中的脚本函数:

Unity脚本函数的执行顺序和脚本的编译顺序Unity脚本函数的执行顺序和脚本的编译顺序



C#是一个以Assembly(汇编集)为一个基本单位来组织代码的,dll就是一个Assembly,dll之间就有加载顺序.

   Assembly(汇编集) ->dll<- 是一种中间字节码,跨平台。

所在目录:Root\Library\ScriptAssemblies\


按优先级顺序排列:

Assets/XXX.dll (外部编译好的)        =======================>

Standard Assets/XXX.cs()               =======================>Assembly-CSharp-firstpass.dll

Assets/XXX.cs                                  =======================>Assembly-CSharp.dll

Standard Assets/Editor/XXX.cs     =======================>Assembly-CSharp-firstpass-editor.dll

/Editor/XXX.cs                                =======================>Assembly-CSharp-Editor.dll

相关文章: