Unity Editor:ExecuteInEditMode vs Editor脚本

时间:2018-03-23 15:30:58

标签: unity3d

使用ExecuteInEditMode的用例和编辑器脚本的用途是什么?何时使用一个而不是另一个?

2 个答案:

答案 0 :(得分:6)

ExecuteInEditMode - 这是脚本的属性,表示为[ExecuteInEditMode]。默认情况下,MonoBehaviours仅在播放模式下执行。通过添加此属性,MonoBehaviour的任何实例都将执行其回调函数,而编辑器不在playmode中。用例包括但不限于:

  1. 位置约束 - 您的脚本可以帮助您使用自定义算法按约束对象位置定位游戏对象。
  2. 连接对象 - 如果ObjectA的ComponentA需要位于场景某处的ComponentB实例,并且您能够使用您的代码找到它,那么您可以自动执行而不是让设计师稍后手动完成。
  3. 编辑器内警告和错误 - 如果您的代码或初始Unity组件设置出现问题,Unity将生成一组标准错误。如果您错误地创建没有门或窗户的房间,您仍然不会收到任何警告。这可以通过自定义脚本完成,因此编辑时会提醒设计人员。
  4. 管理脚本 - 这些脚本可以保持整洁。假设您的场景有5个摄像头,但所有这些摄像头都应具有相同的FOV参数。而不是手动更改它们(是的,您可以选择所有这些,但不能保证其他人也会这样做)您可以使管理脚本使用一个主值调整所有值。因此,所有单个摄像机参数都将被锁定,只能使用管理脚本进行更改。
  5. 团结骑士团已经发布了tutorial on some sample functionality for ExecuteInEditMode,扩展了这一点。

    编辑器脚本 - 这是一个扩展Editor类的脚本集合,一个用于派生自定义编辑器的Base类。这可用于为对象创建自己的自定义检查器guis和编辑器。有关更多信息,请查看this video on Editor Scripting。由于编辑脚本编程,您可能还想查看Scripting API

答案 1 :(得分:0)

使用Editor,您可以自定义MonoBehaviour外观。

对于ExecuteInEditMode,大多数用例都是修改场景视图,例如网格渲染器(我不知道网格渲染器是否使用了ExecuteInEditMode但它可以),它会在游戏中渲染网格,但它也会渲染这个场景视图中的网格。

其他一些用例:验证,与其他组件的通信,修改其他组件,修改游戏对象,基本上你可以做大部分你可以在游戏和编辑器中做的事情。