在项目开发中 , 可能会有这样的需求 , 就是在编辑器模式下想要查看某些自定义方法执行的结果, Unity官方给我们提供了两种方式 , 来看看吧.
1. [ExecuteInEditMode]属性的使用
using UnityEngine;
[ExecuteInEditMode]
public class Test : MonoBehaviour
{
void Start() {
}
void Update()
{
Debug.Log(456);
}
}
优点 :
- 可以再编辑器模式下执行自定义方法;
- 只有在窗口焦点变化的时候才会执行方法(如上边实例中的"456"打印只有在窗口焦点变化的时候才会输出);
缺点:
- 只能在窗口焦点变化的时候才会之赐你个方法 , 不满足特定情况需求;
2. EditorApplication.update方法的使用
using UnityEngine;
using UnityEditor;
[InitializeOnLoad]
public class Easy2DEditorUpdate {
static Easy2DEditorUpdate() {
EditorApplication.update += Update;
}
static void Update ()
{
Debug.Log(456);
}
}
优点 :
- 可以再编辑器模式下执行自定义方法;
- EditorApplication类是编辑器下的工具型类 , 方法有多种类 , 这里只考虑编辑器方法执行部分, update是CallbackFunction 类型的回调方法 , 这方法无视窗口焦点变化问题;
缺点:
- 无视窗口焦点是否变化问题 , 会默认每帧执行 , 比较消耗性能 , 大家根据自己情况灵活运用方法.