Unity技术分享之Unity在编辑器模式下执行某些方法

在项目开发中 , 可能会有这样的需求 , 就是在编辑器模式下想要查看某些自定义方法执行的结果, Unity官方给我们提供了两种方式 , 来看看吧.

1. [ExecuteInEditMode]属性的使用

using UnityEngine;

[ExecuteInEditMode]
public class Test : MonoBehaviour
{
    void Start() {		
	}

     void Update()
    {
        Debug.Log(456);
    }
}

优点 :

  1. 可以再编辑器模式下执行自定义方法;
  2. 只有在窗口焦点变化的时候才会执行方法(如上边实例中的"456"打印只有在窗口焦点变化的时候才会输出);

缺点:

  1. 只能在窗口焦点变化的时候才会之赐你个方法 , 不满足特定情况需求;

2. EditorApplication.update方法的使用

using UnityEngine;
using UnityEditor;

[InitializeOnLoad]
public class Easy2DEditorUpdate {
	static Easy2DEditorUpdate() {
		EditorApplication.update += Update;
	}
	
	static void Update ()
	{
		Debug.Log(456);
	}
}

优点 :

  1. 可以再编辑器模式下执行自定义方法;
  2. EditorApplication类是编辑器下的工具型类 , 方法有多种类 , 这里只考虑编辑器方法执行部分, update是CallbackFunction 类型的回调方法 , 这方法无视窗口焦点变化问题;

缺点:

  1. 无视窗口焦点是否变化问题 , 会默认每帧执行 , 比较消耗性能 , 大家根据自己情况灵活运用方法.
发布了31 篇原创文章 · 获赞 14 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/s15100007883/article/details/92660373