首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >三、编辑器开发之CustomEditor

三、编辑器开发之CustomEditor

作者头像
CoderZ
发布于 2022-08-29 07:34:59
发布于 2022-08-29 07:34:59
82000
代码可运行
举报
运行总次数:0
代码可运行

CustomEditor特性,允许我们自定义组件的Inspect检视面板。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public CustomEditor (Type inspectedType);
public CustomEditor (Type inspectedType, bool editorForChildClasses);

param1: inspectedType 检视的类型,即自定义哪个类型的Inspector。

param2: editorForChildClasses 默认为false,为true时表明其子类使用同样的Inspector。

例如,我们创建一个Person组件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
using UnityEngine;

public class Person : MonoBehaviour
{
    public string Name;
    public int Age;
    public float Weight;
}

检视面板显示了Person组件中的三个公开字段:

接下来自定义该组件的检视面板,首先需要在Editor文件夹中创建一个PersonInspector.cs脚本

引入命名空间UnityEditor后,为该类添加CustomEditor特性,并继承Editor类:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
using UnityEditor;

[CustomEditor(typeof(Person))]
public class PersonInspector : Editor {}

接下来重写OnInspectorGUI方法来自定义我们所需要的内容:

比如在面板上显示一个字符串:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
using UnityEngine;
using UnityEditor;

[CustomEditor(typeof(Person))]
public class PersonInspector : Editor
{
    public override void OnInspectorGUI()
    {
        base.OnInspectorGUI();
        GUILayout.Label("Editor Extension...");
    }
}

再比如在面板上添加一个按钮:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
using UnityEngine; 
using UnityEditor;

[CustomEditor(typeof(Person))]
public class PersonInspector : Editor
{
    public override void OnInspectorGUI()
    {
        base.OnInspectorGUI();
        GUILayout.Label("Editor Extension...");
        GUILayout.Button("Button");
    }
}

具体如何绘制自定义检视面板,例如添加Button、Toggle、Slider等元素,显示string、int、float、enum等字段,在后续文章中进行介绍。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-02-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 当代野生程序猿 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Unity 编辑器开发实战【Custom Editor】- FSM Editor
本文介绍如何为FSM有限状态机模块实现一个自定义编辑器面板,FSM的代码在如下链接中有详细介绍:
CoderZ
2022/08/29
9150
Unity 编辑器开发实战【Custom Editor】- FSM Editor
十、编辑器开发之Button
Button按钮的绘制需要用到GUILayout.Button或者EditorGUILayout.Button方法。
CoderZ
2022/08/29
4720
十、编辑器开发之Button
Unity 编辑器开发实战【Custom Editor】- AudioDatabase Editor 音频库编辑器
开始实现之前,首先简单介绍该音频库模块,音频库类Audio Database继承自Scriptable Object类,是一个可配置的资源文件:
CoderZ
2022/08/29
9420
Unity 编辑器开发实战【Custom Editor】- AudioDatabase Editor 音频库编辑器
Unity編輯器案列
Unity最强大的地方之一是它扩展性非常强的编辑器。Unite Europe 2016上有一个视频专门讲编辑器编程的:
bering
2019/12/02
1.5K0
Unity 实现一个分数系统
项目中经常遇到分数统计的需求,例如我们执行了某项操作或做了某个题目,操作正确则计分,相反则不计分失去该项分数,为了应对需求需要一个分数统计系统。
CoderZ
2022/08/29
5290
Unity 实现一个分数系统
Unity编辑器UnityEditor基础(二)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
bering
2019/12/03
2.4K0
十一、编辑器开发之Toggle
当我们需要切换一个bool值的时候通常需要用到Toggle开关,Toggle的绘制需要用到GUILayout.Toggle或EditorGUILayout.Toggle方法。
CoderZ
2022/08/29
5600
Unity 编辑器开发实战【Create Editor】- RectTransformEditor拓展 Auto Anchors
通过Editor类中的CreateEditor方法可以实现在不改变原有编辑器布局的情况下进行拓展,下面以Rect Transform组件的编辑器为例:
CoderZ
2022/08/29
6070
Unity 编辑器开发实战【Create Editor】- RectTransformEditor拓展 Auto Anchors
Unity 编辑器开发实战【Custom Editor】- 为UI视图制作动画编辑器
为了更方便地为UI视图添加动画,将动画的编辑功能封装在了UI View类中,可以通过编辑器快速的为视图编辑动画。动画分为两种类型,一种是Unity中的Animator动画,该类型直接通过一个字符串类型变量记录动画State状态的名称即可,播放时调用Animator类中的Play方法传入该名称。另一种是DoTween动画,支持视图的移动、旋转、缩放、淡入淡出动画的编辑:
CoderZ
2022/08/29
1.7K0
Unity 编辑器开发实战【Custom Editor】- 为UI视图制作动画编辑器
Unity 实现批量Build打包
一般来讲如果项目是PC或Android、IOS端不会有批量Build打包这样的需求,但如果项目是WebGL端可能会遇到这样的需求:不同场景打包成不同的包体,入口是前端在页面中布局的,点击链接打开相应的程序。依次手动打包比较繁琐而且需要等待很长时间,因此写了批量Build这样的功能,下班时点击Build经历漫长的夜晚,第二天上班时包体已经都打好了。
CoderZ
2022/08/29
5060
Unity 实现批量Build打包
Unity Editor 基础篇(三):自定义窗口
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
bering
2019/12/03
2K0
十二、编辑器开发之Slider及各类字段绘制
为测试脚本Test类中添加以下字段: using UnityEngine; public class Test : MonoBehaviour { public enum TestEnum { Enum1, Enum2, } public string stringValue = "str"; public int intValue = 30; public float floatValue = 50f; publi
CoderZ
2022/08/29
3040
十二、编辑器开发之Slider及各类字段绘制
Unity开发-编辑器:属于自己的编辑菜单
我们添加系统组件的时候,发现面板很好看,而脚本做不到这种效果。 利用GUILayout 绘制UI控件
孙寅
2020/06/02
1.2K0
五、编辑器开发之GUIStyle
在编辑器开发中会大量用到GUIStyle,为了能够精确的实现想要的样式,将所有的样式列在一个窗口中进行预览,如下:
CoderZ
2022/08/29
5460
五、编辑器开发之GUIStyle
七、编辑器开发之PropertyDrawer
PropertyDrawer允许我们控制一个属性的Inspector检视面板的GUI如何绘制。
CoderZ
2022/08/29
4440
七、编辑器开发之PropertyDrawer
六、编辑器开发之GUIIcon
需要注意的是,图标是通过Resources方式加载所有的图片,需要在一个空的工程中进行加载并生成文本,或者工程的Resources文件夹下没有其他贴图资源。
CoderZ
2022/08/29
3160
六、编辑器开发之GUIIcon
Unity 编辑器开发实战【Editor Window】- Duplicator复制机
1.Name Duplicator:名称复制机(根据层级结构复制名称) 2.Material Duplicator:材质复制机(根据层级结构复制材质) 代码如下: namespace SK.Framework { public interface IDuplicator { string InvalidatedInfo { get; } bool IsValidated(); void Duplicate(); } } n
CoderZ
2022/08/29
3410
Unity 编辑器开发实战【Editor Window】- Duplicator复制机
相关推荐
Unity 编辑器开发实战【Custom Editor】- FSM Editor
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档