Unity Editor:ExecuteInEditMode vs Editor脚本

gre*_*ton 1 unity-game-engine

使用ExecuteInEditMode有什么用例以及什么是编辑器脚本?何时使用一个而不是另一个?

Kat*_*kes 6

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

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

Unity的Knights已发布了一个关于ExecuteInEditMode的一些示例功能教程,教程对此进行了扩展.

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