Unity3D编辑器扩展(二)之对Inspetor面板的扩展

淺唱寂寞╮ 提交于 2019-12-03 14:24:25

Unity3D对编辑器的扩展提高了开发的效率,今天就和大家讨论一下对Inspector面板的扩展,这也是我们最经常使用的工具。那就以一个例子来开始学习吧!

在项目的开发过程中经常会用到修改某个脚本的大量数据,我们可以用一个按钮一键来实现这么多的数据修改,不用每个参数都进行修改啦,是不是很方便呢,那么今天的东西就可以派上用场啦!

用到的例子是修改Camera上的nearClipPlane、farClipPlane和fieldOfView参数。
下图是在Inspector面板上Camera没有进行扩展的布局。

这里写图片描述

**注意事项:
(1)、引用UnityEditor;
(2)、添加扩展脚本的类型,如[CustomEditor(typeof(Camera))]
(3)、脚本继承Editor ;
(4)、将脚本放到Editor文件下,如果没有那就创建一个Editor文件夹;**

附上代码片段

using UnityEngine;
using System.Collections;
using UnityEditor;

//需要扩展的脚本
[CustomEditor(typeof(Camera))]

public class SetLightParameters : Editor {

    private Camera camera;

    //重写OnInspectorGUI()方法
    public override void OnInspectorGUI()
    {
        //调用父类的方法
        base.OnInspectorGUI();
        //设置跟踪的对象为Camera
        camera = (Camera)target;

        //添加按钮
        if (GUILayout.Button("SetLightParameters"))
        {
            //改变摄像机的近剪切面
            camera.nearClipPlane = 1f;
            //改变摄像机的远剪切面
            camera.farClipPlane = 500f;
            //改变摄像机的视野
            camera.fieldOfView = 40;
            //保存该跟踪对象的数据
            EditorUtility.SetDirty(target);
        }
    }
}

下面就是在Inspector面板上Camera的改变,可以发现多了一个“SetLightParameters”的按钮。也可以看到一开始的三个参数设置。

这里写图片描述

当点击“SetLightParameters”按钮时,就会使上面的三个参数发生变化,数值都是在脚本中设置的数值,如下图所示:

这里写图片描述

是不是很方便呀,大家也来快点试试吧。如有问题,欢迎来讨论。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!