1.脚本函数执行顺序
2.Awake描述
Awake()在MonoBehavior创建后就立刻调用,在脚本实例的整个生命周期中,Awake函数仅执行一次;如果游戏对象(即gameObject)的初始状态为关闭状态,那么运行程序,Awake函数不会执行;如果游戏对象的初始状态为开启状态,那么Awake函数会执行;值得注意的一点是,Awake函数的执行与否与脚本实例的状态(启用或禁用)并没有关系,而是与脚本实例所绑定的游戏对象的开关状态有关。
3.Scripts Execution Order对脚本执行顺序的影响
在Inspector中设置脚本执行的先后顺序,只能改变同一层级的函数的先后顺序,并不是决定某一脚本完全执行完毕之后再执行另外一个脚本,如下图:仍然是先全部执行完Awake,再执行Start,再执行Upade,最后执行LateUpdate
结果:
4.特殊文件夹对脚本函数编译顺序的影响
首先,需要注意特殊文件夹只影响脚本的编译顺序,并不影响脚本的执行顺序;影响编译顺序最大的问题是,只能后编译的引用先编译的,先编译的无法引用后编译的,例如:我将Ex2放进Standard Assets文件夹,则在Ex2中无法引用Ex1、Ex3中的脚本函数,但是Ex1和Ex3仍然可以正常引用Ex2中的脚本函数:
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