使用自定义Editor类在Unity下扩展Inspector窗口(通用)

本文介绍了如何使用MadEditor工具在Unity中扩展Inspector窗口,无需手写Editor类。MadEditor提供将数据放入容器、展示部分类型Property和以按钮形式展示Method的功能。通过反射技术,MadEditor在启动时自动为未指定Editor的MonoBehaviour绑定自定义Editor,实现通用的Inspector增强。方法按钮的实现原理是反射查找并记录带指定Attribute的方法,点击按钮时通过Invoke执行相应方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Unity的Inspector窗口可以实时展示我们的脚本组件上的变量内容,但是内容比较简陋,很多时候为了显示更多内容或更好的排版,必须手写脚本组件的Editor类以实现目的。

但是有些基础需求,我希望能默认提供给所有脚本组件使用,而无需为其定制Editor类。后来发现有个插件叫做Odin,它能让任意继承自Monobehaviour的脚本都可以实现其提供的Inspector扩展功能(它把所有脚本都绑定到一个名为OdinEditor的类上,所有OdinEditor的功能都会被触发)。于是我便把它的自动绑定相关代码拿来借用了。

接下来便有了MadEditor这个工具,目前提供了3个功能:

  1. 把一些数据放到一个容器内
  2. 展示Property,但是目前只支持部分类型(可扩展)
  3. 展示Method,把部分方法以按钮的形式表现出来,点击按钮就执行方法

下图是功能展示:

上面的功能都无需手写Editor,只要在字段和方法上添加指定的Attribute即可,所有功能均由MadEditor实现。

最后简要说说原理:

Unity编辑器会检查所有Editor类的派生类,如果某个Editor有CustomEditorAttribute并指定了脚本Type,就会把该脚本类型和Editor类型的特殊关系记录下来,当需要在Inspector中显示脚本时,编辑器会先查找是否有对应的Editor,有就创建该Editor的实例,没有则创建默认Editor

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值