首先我们新建两个脚本PreviewGUITest.cs
和PreviewGUITestEditor.cs
在PreviewGUITest.cs
中定义一个字段 :
public Texture2D showTexture;
我们要做的就是自己渲染出一个PreviewGui面板在里面显示出我们上面定义的这个Texture
打开PreivewGUITestEditor脚本
引入UnityEditor
的命名空间:
using UnityEditor;
让PreviewGUITestEditor
继承Editor
public class PreviewGUITestEditor : Editor{}
在PreviewGUITestEditor 类型定义的上方加上一个标签:
[CustomEditor(typeof(PreviewGUITest))]
public class PreviewGUITestEditor : Editor{}
我们重写一下HasPreviewGUI()方法 完成一个功能,当PreviewGUITest中 showTexture字段不为空的时候显示一个空的PreviewGUI面板:
public override bool HasPreviewGUI()
{
bool hasGUI= base.HasPreviewGUI();
bool showGUI = (target as PreviewGUITest).showTexture != null;
return hasGUI||showGUI;
}
然后我们重写一下OnPreviewGUI方法,在PreviewGUI视图中渲染出PreviewGUITest中 showTexture图片:
public override void OnPreviewGUI(Rect r, GUIStyle background)
{
// base.OnPreviewGUI(r, background);
Texture2D showTexture = (target as PreviewGUITest).showTexture;
if (showTexture == null) return;
float size = Mathf.Min(r.width, r.height);
float rectx = r.x + r.width / 2 - size / 2;
float recty = r.y + r.height / 2 - size / 2;
Rect rect=new Rect(rectx,recty,size,size);
GUI.DrawTexture(rect, showTexture);
}
然后我们看一下最终效果: