最近一段时间都在搞编辑器,扩展各种功能,如添加Inspector上的Add Component回调功能,Unity Package 一键更新功能, 还有现在的Scene扩展,也算小有心得了,出来总结一下。
一、不运行时也可以运行的类
比较特殊的类,比如说Editor,EditorWindow,ScriptableObject,AssetPostprocessor等特殊一点的就不说了,网上一抓一大把介绍的,主要讲讲两个重要特性ExecuteInEditMode和InitializeOnLoad。
1、ExecuteInEditMode
// ExecuteInEditMode主要是让MonoBehaviour可以在不运行时,也可以执行各个生命周期的特性
// 可以配合Mono单例使用
// 需要把组件拖到GameObject上才能执行
[ExecuteInEditMode]
public class PackageManager : MonoBehaviour
{
// 其中值得介绍的是OnEnable和OnDisable
// 因为改了代码之后会将数据清零,而且不会执行Awake和Start
// 但是会在编译前执行OnDisable,编译后会执行OnEnable
// 可以用这一个时机,对一些委托的绑定与解绑,或者数据的初始化和销毁