找回密码
 立即注册
查看: 295|回复: 0

Unity调整脚本执行顺序方法记录

[复制链接]
发表于 2023-2-23 12:32 | 显示全部楼层 |阅读模式
Unity的脚本顺序,我们在搜索引擎上搜索,最常看到的就是讲单个Mono脚本内各个函数执行顺序的文章。但是这个并不是这篇记录的主要内容,如果真的好奇脚本内事件函数的执行顺序,简易直接去Unity官网查看。

言归正传,这次要记录的,主要是同一事件函数阶段,各个脚本的执行顺序的设置问题。
Script Execution Order设置界面


最常见的方法,就是通过Project Settings内的Script Execution Order,对指定脚本设置排序值,从而达到对脚本排序的目的。

脚本顺序设置举例

上图就是我现在项目中对脚本的执行顺序的设置。

在Script Execution Order内,通过添加/删除脚本,修改后面排序的数字,就可以达到修改脚本执行顺序的目的。其中的Default Time,指的就是没有添加进来的其他脚本,则会按照引擎的加载顺序进行排序。

但是这个方法有一个缺陷:脚本执行顺序的调整只能在开发阶段进行设置,而在运行时无法使用这个方法进行代码顺序的调整。
DefaultExecutionOrder属性


这个方法是搜索引擎内不易直接找出的方法,但是很灵活(甚至过于灵活)。

这个方法要求我们对需要调整的脚本添加DefaultExecutionOrder属性,代码如下:
[DefaultExecutionOrder(100)]public class SelfMono : MonoBehaviour{ ... }
上面的例子,就是将SelfMono这个脚本的执行顺序设置为100,这个100的含义同Script Execution Order内的排序数字是一样的。

PS:比较奇怪的,我在Unity官网搜索,并没有找到与DefaultExecutionOrder相关的介绍或说明。

需要指出,这个方法缺陷其实也很明显,就是太过灵活,如果在项目中不加控制得添加DefaultExecutionOrder属性,很可能导致项目内的脚本执行顺序过于混乱。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-16 11:25 , Processed in 0.118954 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表