Unity編輯器擴展中,使用Unity自帶的GUIStyle


  在進行編輯器擴展時,創建組件的方法一般都會提供GUIStyle參數,可以讓我們自定義樣式。修改背景圖,字體大小,顏色等等。

比如,創建Button組件的方法:public static bool Button(string text, GUIStyle style, params GUILayoutOption[] options);

創建時可以傳遞一個GUIStyle參數來自定義樣式。

  在GUI.skin.customStyles數組中,unity定義了很多自帶的樣式。有的需求可以直接在這些樣式里面來找符合需求的樣式。怎么找呢?寫個工具:

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("復制GUIStyle名字"))
        {
            TextEditor textEditor = new TextEditor();
            textEditor.text = style.name;
            textEditor.OnFocus();
            textEditor.Copy();
        }
        GUILayout.EndHorizontal();
        GUILayout.Space(10);
    }
}

點擊菜單欄UFramework->GUIStyle查看器:

在里面尋找我們想要的樣式即可。

 

我們這樣創建一個button按鈕:

if (GUILayout.Button("Button", GUILayout.Width(100), GUILayout.Height(30)))
{
    OnClickButton();
}

這樣不傳GUIStyle樣式參數就是使用默認樣式,如下:

  現在我們的需求是點擊后,把Button按鈕設置位不可點擊的樣式,我們在GUIStyle查看器里尋址我們需要的樣式,

看到ObjectPickerBackground跟我們需要的樣式差不多,決定使用這個樣式

怎么使用這個樣式呢?

點擊復制GUIStyle名字按鈕,會把該GUIStyle樣式的名字 "ObjectPickerBackground" 復制到剪切板。然后在unity中用該名字定義GUIStyle:

GUIStyle styleApply = new GUIStyle("ObjectPickerBackground"); //直接用樣式名定義
styleApply.alignment = TextAnchor.MiddleCenter; //該樣式文字偏左了,我們想讓它居中對齊
if (GUILayout.Button("Button", styleApply, GUILayout.Width(100), GUILayout.Height(30)))
{
    OnClickButton();
}

好了,Button的樣式就變成這樣了

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM