unity显示编辑器不存在_unity Scene View扩展之编辑器扩展总结

跳转至专题目录

专题推荐文章:

  1. 温故知新——RectTransform成员属性的再认识
  2. unity Scene View扩展之编辑器扩展总结
  3. Unity获取鼠标点击ui GameObject

本系列目录

  1. unity编辑器扩展之SceneUI——贴在Scene View的SceneCanvas
  2. unity Scene View扩展之屏蔽对Scene的所有操作
  3. unity Scene View扩展之显示常驻GUI
  4. unity Scene View扩展之显示网格
  5. unity Scene View扩展之加载Assets文件夹外的资源
  6. unity Scene View扩展之编辑器扩展总结

最近一段时间都在搞编辑器,扩展各种功能,如添加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
    // 可以用这一个时机,对一些委托的绑定与解绑,或者数据的初始化和销毁
    // 当然正常的SetActive也会触发这两个时机
    void OnEnable()
    {
    
    }

    void OnDisable()
    {
    
    }
}

2、InitializeOnLoad

// InitializeOnLoad主要是让一个普通类可以在编辑器下初始化
// 个人认为虽然可以用Mono调用单例也可以达到相同效果,不过有些时候并不需要创建一个GameObject
// 所以直接定义一个这么的类就好了
[InitializeOnLoad]
public static class EditorTiming
{
    
	// 构造函数可以在编辑器打开,或者编译后执行,放心地把Init或者Reset放在这里
	static EditorTiming()
	{
    
	}
}

3、单例模式

单例模式没什么好说的,无论时普通的Singleton<T>,还是MonoSingleton<T>,都可以在网上找到,这

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值