unity 获取unity所有EditorStyles

using UnityEngine;
using UnityEditor;
using System.Reflection;
using System.Collections.Generic;

public class Script_GetStyles : EditorWindow
{
    static List<GUIStyle> styles = null;
    [MenuItem("Window/Open My Window styles")]
    public static void Test()
    {
        EditorWindow.GetWindow<Script_03_29>("styles");

        styles = new List<GUIStyle>();
        foreach (PropertyInfo fi in typeof(EditorStyles).GetProperties(BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic))
        {
            object o = fi.GetValue(null, null);
            if (o.GetType() == typeof(GUIStyle))
            {
                styles.Add(o as GUIStyle);
            }
        }
    }

    public Vector2 scrollPosition = Vector2.zero;
    void OnGUI()
    {
        scrollPosition = GUILayout.BeginScrollView(scrollPosition);
        for (int i = 0; i < styles.Count; i++)
        {
            GUILayout.Label("EditorStyles." + styles[i].name, styles[i]);
        }
        GUILayout.EndScrollView();
    }
}

 

posted @ 2022-07-12 17:41  枫亦  阅读(9)  评论(0)    收藏  举报