Unity3D之在开始学习拓展编辑器
Unity 具备极为丰富的拓展编辑器接口。倘若你曾在网上下载过他人编写的插件,或许会好奇为何其监测面板视图与普通的有所不同。实际上,这是开发者通过代码自行绘制的监测面板。在这篇博文中,我将带领大家一同学习编辑器拓展。如下图所示,这便是我通过代码拓展的面板视图。
接下来,我们编写一个简单的脚本,并将其挂载到摄像机上:
using UnityEngine;
using System.Collections;
public class Test : MonoBehaviour
{
public Rect mRectValue;
public Texture texture;
}
下面举例说明 [HideInInspector] 和 [SerializeField] 的作用。这两个特性可用于在面板中隐藏数据,同时对数据进行序列化。序列化的好处在于能够永久保存数据,若不使用这两个特性,数值在某些情况下就会重置。例如,当我们先添加了一个贴图,若未使用序列化,运行游戏后刚刚添加的贴图就会变为 null。
仍以 texture 为例,当我们使用 texture 对象时,会进入 get 板块获取私有变量 pTexture 的值;而当编辑器更改 texture 时,会进入 set 板块,将新的数值保存到 pTexture 中。这样做能让数据更加安全,因为操作的是当前类中的一个私有变量。此外,我们还可以在 get/set 板块中添加一些特殊的代码来实现特定的逻辑。
最后,在 Update() 或者 OnGUI 方法中,我们就可以直接使用 texture 对象了。当然,这里的 texture 也可以替换为你自定义的任意对象。