【编辑器扩展】实现自定义PreviewGUI显示面板

19 篇文章 0 订阅
11 篇文章 0 订阅

首先我们新建两个脚本PreviewGUITest.csPreviewGUITestEditor.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);
    }

然后我们看一下最终效果:
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值