Unity Editor 編輯器擴展 六 EditorWindow

目錄

EditorWindow的簡單用法之前都用過了,這裏介紹一些特殊的用法

窗口彈出框

在Editor下創建腳本如下:

using UnityEditor;
using UnityEngine;

public class WindowExample1 : EditorWindow
{
    [MenuItem("Window/WindowExample1")]
    static void Open ()
    {
        GetWindow<WindowExample1> ();
    }


    ExamplePupupContent popupContent = new ExamplePupupContent ();

    void OnGUI ()
    {
        if (GUILayout.Button ("PopupContent",GUILayout.Width(128))) {
            var activatorRect = GUILayoutUtility.GetLastRect ();

            PopupWindow.Show (activatorRect, popupContent);
        }
    }
}

//彈窗
public class ExamplePupupContent : PopupWindowContent
{
    public override void OnGUI (Rect rect)
    {
        EditorGUILayout.LabelField ("Lebel");
    }

    public override void OnOpen ()
    {
        Debug.Log ("打開窗口");
    }

    public override void OnClose ()
    {
        Debug.Log ("關閉窗口");
    }

    public override Vector2 GetWindowSize ()
    {
        //Popup 彈窗的大小
        return new Vector2 (300, 200);
    }
}

效果如下:
這裏寫圖片描述
這裏寫圖片描述

窗口創建查找遊戲物體

在Editor下創建腳本如下:

using UnityEditor;
using UnityEngine;

public class WindowExample2 : ScriptableWizard

{
    public string gameObjectName;
    [MenuItem("Window/WindowExample2")]
    static void Open ()
    {
        DisplayWizard<WindowExample2> ("TitleName", "Create", "Find");

    }
//  創建一個GameObject
    void OnWizardCreate ()
    {
        new GameObject (gameObjectName);
    }
    void OnWizardOtherButton ()
    {
        var gameObject = GameObject.Find (gameObjectName);

        if (gameObject == null)
        {
            Debug.Log ("沒有找到相關物體");
        }
    }
    void OnWizardUpdate ()
    {
        Debug.Log ("Update");
    }
}

效果如下:
這裏寫圖片描述

爲窗口添加圖標和菜單

在Editor下創建腳本如下:

using UnityEditor;
using UnityEngine;

public class WindowExample3 : EditorWindow,IHasCustomMenu
{
//  給窗口添加菜單
    public void AddItemsToMenu (GenericMenu menu)
    {
        menu.AddItem (new GUIContent ("example"), false, () => {

        });

        menu.AddItem (new GUIContent ("example2"), true, () => {
        });
    }



    [MenuItem ("Window/WindowExample3")]
    static void Open ()
    {
        var window = GetWindow<WindowExample3> ();

//      設置窗口最大和最小尺寸,這裏最大和最小相等,相當於尺寸不可改變
        window.maxSize = window.minSize = new Vector2 (300, 300);
//      設置窗口圖標
        var icon = AssetDatabase.LoadAssetAtPath<Texture> ("Assets/Editor/Mondeville.png");
//      設置窗口標題
        window.titleContent = new GUIContent ("Hoge", icon);

    }
}

效果如下:
這裏寫圖片描述

本文工程:http://download.csdn.net/detail/warrenmondeville/9700712
本文鏈接:http://write.blog.csdn.net/mdeditor#!postId=53444808

發佈了31 篇原創文章 · 獲贊 17 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章