Unity 3D 游戏脚本 多脚本管理

Unity 脚本可以灵活地挂在多个游戏对象上,一个游戏对象也可以挂在多个脚本。那么:脚本多了,如何来管理,如何控制不同脚本执行的先后顺序?

启动游戏后,Unity 会同时处理所有脚本。比如,执行脚本中的 Awake() 方法时,Unity 会先找到此时需要初始化的所有脚本,然后同时(先后顺序)执行这些脚本的所有 Awake() 方法。

//--脚本的执行顺序

脚本既可以在运行时动态添加在游戏对象上,也可以运行游戏前预制挂在游戏对象上。动态添加的脚本按添加的先后顺序决定执行顺序。但是静态脚本因此提前挂在了游戏对象上,所以初始化的顺序就不一样了。

在Editor→ProjectSettings→ScriptExecutionOrder中可以设置脚本的执行顺序。

例如,A B两个脚本,A先执行B后执行,如果在A的Awake()中获取B脚本的数据,那么可能就会出错。因为此时B脚本的初始化方法还没有执行。所以Awake() 方法适合做初始化,而在 Start() 方法中才适合安全地访问其他脚本的数据。这也说明了为什么在生命周期中会提供Start() 方法。

//-----------------------------------

//--多脚本优化

脚本挂的越多,执行效率就越低。这些脚本都需要执行生命周期的方法,此时Unity 需要遍历它们,然后再反射调用每个脚本的方法。

所以我们能做的优化就是避免挂太多脚本,避免在脚本中写入空方法。

如果不需要,就把它们删除掉。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值