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”按钮时,就会使上面的三个参数发生变化,数值都是在脚本中设置的数值,如下图所示:
是不是很方便呀,大家也来快点试试吧。如有问题,欢迎来讨论。