Unity可扩展编辑器

UnityEditor 之 自定义Editor

菜单栏添加菜单按钮

using UnityEngine;
using System.Collections;
using UnityEditor;

public class Menu : MonoBehaviour {

    [MenuItem("ShowDialog/ShowDialog")]
    static void showDialog()
    {
        EditorUtility.DisplayDialog("Something Error!","This is a new dialog","close");
    }
}

可扩展编辑器


Texture2D 要可读,改 Texture 属性为 Advance 并在Override 地方的 Format 要设置正确


MyInspector

using UnityEngine;
using System.Collections;

public class MyInspector : MonoBehaviour {

    public Rect m_rectValue;
    public Texture2D m_texture;

    public int m_iCount;
    public float m_fLength;

    public string m_strSaveName;
    public bool m_bIsSave;

    public void SaveInfo(){
        Debug.Log ("Rect:"+m_rectValue+"\n"+"Count:"+m_iCount+"\n"+"Length:"+m_fLength+"\n"
            +"SaveName:"+ m_strSaveName+"\n"+"IsSave:"+m_bIsSave+"\n");

        string newFileName = Application.dataPath+"/Resources/Texture/"+m_strSaveName+".png";

        byte[] newByte = m_texture.EncodeToPNG();

        System.IO.File.WriteAllBytes (newFileName, newByte);
    }

}

MyEditor

using UnityEngine;
using System.Collections;
using UnityEditor;

//自定义MyInspector脚本
[CustomEditor(typeof(MyInspector))]
//在编辑模式下执行脚本,这里用处不大可以删除
[ExecuteInEditMode]

//请继承Editor
public class MyEditor : Editor {

    //在这个方法中可以绘制面板
    public override void OnInspectorGUI(){

        //得到MyInspector对象
        MyInspector myInspector = (MyInspector)target;

        //绘制一个窗口
        myInspector.m_rectValue = EditorGUILayout.RectField("窗口坐标",myInspector.m_rectValue);

        myInspector.m_texture = EditorGUILayout.ObjectField ("增加一个贴图", myInspector.m_texture, typeof(Texture2D), true) as Texture2D;

        myInspector.m_iCount = EditorGUILayout.IntField ("数量", myInspector.m_iCount);

        myInspector.m_fLength = EditorGUILayout.FloatField ("长度", myInspector.m_fLength);

        myInspector.m_strSaveName = EditorGUILayout.TextField ("保存文件名", myInspector.m_strSaveName);

        myInspector.m_bIsSave = EditorGUILayout.Toggle ("是否保存", myInspector.m_bIsSave);

        if (GUILayout.Button ("信息打印", GUILayout.Width (128))) {
            myInspector.SaveInfo ();
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值