Unity编辑器拓展--Inspector拓展
前言
Inspector面板记录的都是我们项目中对象所有的组件信息,如果我们想在Inspector面板中的Transform中添加一个组件应该怎么实现呢?
这里我们首先创建一个脚本来控制Inspector面板的拓展
Inspector拓展
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
//这里要通过一个特性来指定是在哪个组件下的
[CustomEditor(typeof(Camera))]
public class TestInspector : Editor
{
public override void OnInspectorGUI()
{
//这个是绘制原生的GUI
base.OnInspectorGUI();
//通过GUI绘制一个按钮
if (GUILayout.Button("Inspeactor1"))
{
Debug.Log("Inspeactor1");
}
}
static void Test1()
{
}
}
如图所示:

点击出现:

这里我们来做一下通过点击按钮修改一下组件内一些属性的值:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
//这里要通过一个特性来指定是在哪个组件下的
[CustomEditor(typeof(Camera))]
public class TestInspector : Editor
{
public override void OnInspectorGUI()
{
//这个是绘制原生的GUI
base.OnInspectorGUI();
//通过GUI绘制一个按钮
if (GUILayout.Button("Inspeactor1"))
{
Debug.Log("Inspeactor1");
Camera camera = this.target as Camera;
if (camera != null)
{
//这里我们修改一下它的深度
camera.depth += 1;
}
}
}
static void Test1()
{
}
}
Context菜单
我们在Inspector面板中右键可以看到弹出了一个菜单,那么我们怎么重写这个弹出的菜单呢?

同样的我们创建一个脚本来控制:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
public class TestInspectorContext : MonoBehaviour
{
[MenuItem("CONTEXT/Transform/SetPosition")]
static void SetPosition(MenuCommand command)
{
Debug.Log("Set Position");
Transform transform = command.context as Transform;
if (transform != null)
{
transform.position += Vector3.one;
}
}
}

然后我们点击一下来改变他的位置

本文介绍了如何在Unity编辑器中扩展Inspector面板,通过创建自定义脚本添加按钮并修改组件属性。同时展示了如何实现Context菜单的重写,以在Transform组件上设置新的操作选项,例如修改位置。

1451

被折叠的 条评论
为什么被折叠?



