UnityEditor 使用自帶的GUIstyle

鏈接:UnityEditor 使用自帶的GUIstyle

在Unity編輯器開(kāi)發(fā)時(shí),而GUI的各個(gè)組件基本上都有個(gè)GUIstyle的參數(shù)用于我們自定義不同的樣式。可以用skin中已有的一些樣式,如GUILayout.Label("label標(biāo)簽",GUI.skin.label);,也可以自行創(chuàng)建一個(gè)skin使用自定義不同的樣式。

但是Unity自帶了各種自定義好的樣式,能滿足很多的應(yīng)用場(chǎng)景,但卻經(jīng)常被忽略。如圖。

GUIStyleView.png

這些style藏在GUI.skin.customStyles中。寫(xiě)了個(gè)簡(jiǎn)單的工具方便查看和搜索這些樣式。效果圖如上圖,代碼:

using UnityEngine;
using UnityEditor;

public class GUIStyleViewer : EditorWindow
{
    private Vector2 scrollVector2 = Vector2.zero;
    private string search = "";

    [MenuItem("UFramework/GUIStyle查看器")]
    public static void InitWindow()
    {
        EditorWindow.GetWindow(typeof(GUIStyleViewer));
    }

    void OnGUI()
    {
        GUILayout.BeginHorizontal("HelpBox");
        GUILayout.Space(30);
        search = EditorGUILayout.TextField("", search, "SearchTextField", GUILayout.MaxWidth(position.x / 3));
        GUILayout.Label("", "SearchCancelButtonEmpty");
        GUILayout.EndHorizontal();
        scrollVector2 = GUILayout.BeginScrollView(scrollVector2);
        foreach (GUIStyle style in GUI.skin.customStyles)
        {
            if (style.name.ToLower().Contains(search.ToLower()))
            {
                DrawStyleItem(style);
            }
        }
        GUILayout.EndScrollView();
    }

    void DrawStyleItem(GUIStyle style)
    {
        GUILayout.BeginHorizontal("box");
        GUILayout.Space(40);
        EditorGUILayout.SelectableLabel(style.name);
        GUILayout.FlexibleSpace();
        EditorGUILayout.SelectableLabel(style.name, style);
        GUILayout.Space(40);
        EditorGUILayout.SelectableLabel("", style, GUILayout.Height(40), GUILayout.Width(40));
        GUILayout.Space(50);
        if (GUILayout.Button("復(fù)制到剪貼板"))
        {
            TextEditor textEditor = new TextEditor();
            textEditor.text = style.name;
            textEditor.OnFocus();
            textEditor.Copy();
        }
        GUILayout.EndHorizontal();
        GUILayout.Space(10);
    }
}

上面的搜索框,便是使用了"SearchTextField","SearchCancelButtonEmpty"兩個(gè)樣式。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容