Unity Editor 编辑器拓展 03——自定义Inspector面板

当一个类继承自MonoBehaviour和ScriptableObject时,可以在Inspector面板中修改数据。如何让Inspector面板按照需要显示,就显得很重要。

本片文章分多节讲解。涉及CustomEditor,CanEditMultipleObjects,CanEditMultipleObjects, OnInspectorGUI ,SerializeField ,MonoBehaviour.OnValidate() 。撤销用到的Undo,SerializedObject, SerializedProperty.

 

Editor

变量

serializedObject表示正在检查的一个或多个对象的 SerializedObject。
target所检查的对象。
targets正在检查的所有对象的数组。

公共函数

DrawDefaultInspector绘制内置检视面板。
DrawHeader调用此函数以绘制编辑器标头。
DrawPreview预览绘制的第一个入口点。
GetInfoString实现此方法以在资源预览上显示资源信息。
GetPreviewTitle如果要更改 Preview 区域的标签,可重载此方法。
HasPreviewGUI如果实现 OnPreviewGUI,可在子类中重载此方法。
OnInspectorGUI实现此函数以创建自定义检视面板。
OnInteractivePreviewGUI实现此方法可创建您自己的交互式自定义预览。交互式自定义预览用于检视面板和对象选择器的预览区域。
OnPreviewGUI实现此方法可为检视面板、主编辑器标头和对象选择器的预览区域创建您自己的自定义预览。
OnPreviewSettings如果要在预览标头中显示自定义控件,可重载此方法。
RenderStaticPreview如果要渲染静态预览,可重载此方法。
Repaint重新绘制显示此编辑器的任意检视面板。
RequiresConstantRepaint是否需要在当前状态下不断重绘此编辑?
UseDefaultMargins如果您不想使用默认边距,可在子类中重载此方法以返回 false。

受保护的函数

ShouldHideOpenButton返回检视面板中“open”按钮的可见性设置。

静态函数

CreateCachedEditor返回时,previousEditor 为 targetObject 或 targetObjects 的编辑器。如果该编辑器已在跟踪对象,则函数会返回,否则该函数会销毁之前的编辑器并创建一个新编辑器。
CreateCachedEditorWithContext使用上下文对象创建缓存的编辑器。
CreateEditor为 targetObject 或 targetObjects 创建自定义编辑器。
CreateEditorWithContext使用上下文对象为 targetObject 或 targetObjects 创建自定义编辑器。

消息

OnSceneGUI使编辑器在场景视图中处理事件。

Events

finishedDefaultHeaderGUI在绘制默认标题项之后,在绘制 Inspector 窗口的标题时引发的事件。

 

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity编辑器拓展Editor Extension)可以通过自定义的脚本来扩展Unity编辑器的功能和界面,以满足特定项目的需求。通过编辑器拓展,开发者可以创建自定义编辑器窗口、工具栏按钮、菜单项、检视面板等,来增强Unity编辑器的功能和流程。 要创建一个Unity编辑器拓展,你可以使用C#编写一个继承自Editor类的脚本。这个脚本可以通过UnityInspector面板来设置相关的属性和行为。以下是一个简单的示例: ```csharp using UnityEngine; using UnityEditor; public class MyEditorExtension : EditorWindow { [MenuItem("Custom Tools/My Editor Window")] public static void OpenWindow() { // 创建并打开一个自定义编辑器窗口 MyEditorExtension window = (MyEditorExtension)EditorWindow.GetWindow(typeof(MyEditorExtension)); window.Show(); } private void OnGUI() { // 在编辑器窗口中绘制UI元素 GUILayout.Label("Hello, I am a custom editor window!"); if (GUILayout.Button("Click Me")) { Debug.Log("Button clicked!"); } } } ``` 上述代码创建了一个自定义编辑器窗口,并在窗口中绘制了一个标签和一个按钮。通过在Unity编辑器中点击"Custom Tools"菜单下的"My Editor Window",可以打开这个自定义编辑器窗口。 除了编辑器窗口,你还可以通过继承Editor类来创建自定义的检视面板、菜单项等。Unity官方文档中有更详细的教程和示例,可以帮助你更深入地了解和使用Unity编辑器拓展

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值