pc8888888 发表于 2021-4-8 14:25

Unity 系统图标

太久没更新了。感觉对不起大家。跟大家说一声抱歉。




先来一贴,之前写过一篇Unity系统图标,但是发现使用起来还是有些不好用。所以今天重新写了一个。补了两个小东西。
01获得系统图标的方法

List<UnityEngine.Object> m_Icons;m_Icons = new List<UnityEngine.Object>(Resources.FindObjectsOfTypeAll(typeof(Texture)));02剪切板

TextEditor m_te = new TextEditor();m_te.text = icon.name;m_te.SelectAll();m_te.Copy();03编辑器完整代码

/******************************************************************** Copyright (C) 2020 STUPID DOG STUDIO类    名:UnityIconWindow.cs 创建时间:2021-04-01 17:51:52 作    者:Birth.Fat描    述: 版    本:2.0*********************************************************************/using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEditor;using System.Xml;using System.IO;public class UnityIconsWindow : EditorWindow{    GUIStyle m_textStyle;    GUIStyle m_saveBtnStyle;    GUIStyle m_iconNameStyle;    string m_search = "";    Vector2 m_scrollPosition = new Vector2(0, 0);    List<UnityEngine.Object> m_Icons;    TextEditor m_te = new TextEditor();          static void AddWindow()    {      Rect wr = new Rect(0, 0, 1600, 1000);      UnityIconsWindow window = (UnityIconsWindow)EditorWindow.GetWindowWithRect(typeof(UnityIconsWindow), wr, true, "Unity系统图标");      window.Show();    }    //------------------------------------------------------    void OnGUI()    {      SystemIconViewer();    }    //------------------------------------------------------    private void SystemIconViewer()    {      InitGUIStyle();                GUILayout.BeginHorizontal("HelpBox");      GUILayout.Label("结果如下:" + m_search, m_textStyle);      GUILayout.FlexibleSpace();      if (GUILayout.Button("SHIT!", m_saveBtnStyle, GUILayout.Width(80)))      {            InitIconList();      }      GUILayout.EndHorizontal();                m_scrollPosition = GUILayout.BeginScrollView(m_scrollPosition);      if (m_Icons != null)      {            for (int i = 0; i < m_Icons.Count; i++)            {                if (i % 15 == 0)                {                  GUILayout.BeginHorizontal("PopupCurveSwatchBackground");                  for (int j = 0; j < 15; j++)                  {                        var icon = m_Icons;                        GUILayout.BeginVertical();                        if (GUILayout.Button((Texture)icon, GUILayout.Width(100), GUILayout.Height(100)))                        {                            m_te.text = icon.name;                            m_te.SelectAll();                            m_te.Copy();                            this.ShowNotification(new GUIContent("Unity 体统不表:" + icon.name + "已经复制到剪切板!"));                        }                        GUILayout.Label(icon.name, m_iconNameStyle, GUILayout.Width(100));                        GUILayout.EndVertical();                        i++;                        if (i == m_Icons.Count)                            break;                  }                  GUILayout.EndHorizontal();                  GUILayout.Space(6);                }            }      }      GUILayout.EndScrollView();    }    //------------------------------------------------------    private void InitIconList()    {      if (m_Icons == null || m_Icons.Count == 0)      {            m_Icons = new List<UnityEngine.Object>(Resources.FindObjectsOfTypeAll(typeof(Texture)));            m_Icons.Sort((pA, pB) => System.String.Compare(pA.name, pB.name, System.StringComparison.OrdinalIgnoreCase));            m_search = m_Icons.Count.ToString(); // GUILayout.Label(m_search)      }    }    //------------------------------------------------------    private void InitGUIStyle()    {      if (m_textStyle == null)      {            m_textStyle = new GUIStyle("HeaderLabel");            m_textStyle.fontSize = 20;            //color = textStyle.normal.textColor ;      }      if (m_iconNameStyle == null)      {            m_iconNameStyle = new GUIStyle("WarningOverlay");            m_iconNameStyle.fontSize = 12;      }      if (m_saveBtnStyle == null)      {            m_saveBtnStyle = new GUIStyle("flow node 1");            m_saveBtnStyle.fontSize = 16;            m_saveBtnStyle.fixedHeight = 38;            m_saveBtnStyle.alignment = TextAnchor.MiddleCenter;            m_saveBtnStyle.fontStyle = m_textStyle.fontStyle;      }    }    //------------------------------------------------------    private void Reset()    {      if (m_Icons == null)            return;      if (m_Icons.Count > 0)            m_Icons.Clear();    }}
页: [1]
查看完整版本: Unity 系统图标