首页 >Unity3D频道 >【Unity杂文】 > Unity3D研究院之系统内置系统图标大整理
2015
12-02

Unity3D研究院之系统内置系统图标大整理

有时候在做编辑器的时候想用系统按钮的图标,可是不知道怎么写怎么办? Unity的系统图标分为两种, 一个是鼠标的图标(当鼠标放在一个Rect区域时的样式)、还有就是按钮的图标。

鼠标的图标unity提供了枚举,我遍历一下就出来了, 可是系统图标unity是用字符串的形式加载的,那么我反编译了一下editor的dll用正则提取出来了。 如下图所示

QQ20151202235050_meitu_1

 

为了让大家更好的对上号, 我又重新截了一张图。

QQ20151203002743

然后是图标名字。

TreeEditor.AddLeaves
TreeEditor.AddBranches
TreeEditor.Trash
TreeEditor.Duplicate
TreeEditor.Refresh
editicon.sml
tree_icon_branch_frond
tree_icon_branch
tree_icon_frond
tree_icon_leaf
tree_icon
animationvisibilitytoggleon
animationvisibilitytoggleoff
MonoLogo
AgeiaLogo
AboutWindow.MainHeader
Animation.AddEvent
lightMeter/greenLight
lightMeter/lightRim
lightMeter/orangeLight
lightMeter/redLight
Animation.PrevKey
Animation.NextKey
Animation.AddKeyframe
Animation.EventMarker
Animation.Play
Animation.Record
AS Badge Delete
AS Badge Move
AS Badge New
WelcomeScreen.AssetStoreLogo
preAudioAutoPlayOff
preAudioAutoPlayOn
preAudioPlayOff
preAudioPlayOn
preAudioLoopOff
preAudioLoopOn
AvatarInspector/BodySilhouette
AvatarInspector/HeadZoomSilhouette
AvatarInspector/LeftHandZoomSilhouette
AvatarInspector/RightHandZoomSilhouette
AvatarInspector/Torso
AvatarInspector/Head
AvatarInspector/LeftArm
AvatarInspector/LeftFingers
AvatarInspector/RightArm
AvatarInspector/RightFingers
AvatarInspector/LeftLeg
AvatarInspector/RightLeg
AvatarInspector/HeadZoom
AvatarInspector/LeftHandZoom
AvatarInspector/RightHandZoom
AvatarInspector/DotFill
AvatarInspector/DotFrame
AvatarInspector/DotFrameDotted
AvatarInspector/DotSelection
SpeedScale
AvatarPivot
Avatar Icon
Mirror
AvatarInspector/BodySIlhouette
AvatarInspector/BodyPartPicker
AvatarInspector/MaskEditor_Root
AvatarInspector/LeftFeetIk
AvatarInspector/RightFeetIk
AvatarInspector/LeftFingersIk
AvatarInspector/RightFingersIk
BuildSettings.SelectedIcon
SocialNetworks.UDNLogo
SocialNetworks.LinkedInShare
SocialNetworks.FacebookShare
SocialNetworks.Tweet
SocialNetworks.UDNOpen
Clipboard
Toolbar Minus
ClothInspector.PaintValue
EditCollider
EyeDropper.Large
ColorPicker.CycleColor
ColorPicker.CycleSlider
PreTextureMipMapLow
PreTextureMipMapHigh
PreTextureAlpha
PreTextureRGB
Icon Dropdown
UnityLogo
Profiler.PrevFrame
Profiler.NextFrame
GameObject Icon
Prefab Icon
PrefabNormal Icon
PrefabModel Icon
ScriptableObject Icon
sv_icon_none
PreMatLight0
PreMatLight1
Toolbar Plus
Camera Icon
PreMatSphere
PreMatCube
PreMatCylinder
PreMatTorus
PlayButton
PauseButton
HorizontalSplit
VerticalSplit
BuildSettings.Web.Small
js Script Icon
cs Script Icon
boo Script Icon
Shader Icon
TextAsset Icon
AnimatorController Icon
AudioMixerController Icon
RectTransformRaw
RectTransformBlueprint
MoveTool
MeshRenderer Icon
Terrain Icon
SceneviewLighting
SceneviewFx
SceneviewAudio
SettingsIcon
TerrainInspector.TerrainToolRaise
TerrainInspector.TerrainToolSetHeight
TerrainInspector.TerrainToolSmoothHeight
TerrainInspector.TerrainToolSplat
TerrainInspector.TerrainToolTrees
TerrainInspector.TerrainToolPlants
TerrainInspector.TerrainToolSettings
RotateTool
ScaleTool
RectTool
MoveTool On
RotateTool On
ScaleTool On
RectTool On
ViewToolOrbit
ViewToolMove
ViewToolZoom
ViewToolOrbit On
ViewToolMove On
ViewToolZoom On
StepButton
PlayButtonProfile
PlayButton On
PauseButton On
StepButton On
PlayButtonProfile On
PlayButton Anim
PauseButton Anim
StepButton Anim
PlayButtonProfile Anim
WelcomeScreen.MainHeader
WelcomeScreen.VideoTutLogo
WelcomeScreen.UnityBasicsLogo
WelcomeScreen.UnityForumLogo
WelcomeScreen.UnityAnswersLogo
Toolbar Plus More

最后是代码,注意!我的代码是把上面的图名保存在本件用Resources.Load完成的。

using UnityEngine;
using UnityEditor;
using System;

class MyWindow : EditorWindow
{
    static string []text;
    [MenuItem("Window/My Window")]



    public static void ShowWindow()
    {
        EditorWindow.GetWindow(typeof(MyWindow));
        text = Resources.Load<TextAsset>("t").text.Split("n"[0]);
    }
    public Vector2 scrollPosition;
    void OnGUI()
    {

        scrollPosition = GUILayout.BeginScrollView(scrollPosition);

        //鼠标放在按钮上的样式
        foreach (MouseCursor item in Enum.GetValues(typeof(MouseCursor)))
        {
            GUILayout.Button(Enum.GetName(typeof(MouseCursor), item));
            EditorGUIUtility.AddCursorRect(GUILayoutUtility.GetLastRect(), item);
            GUILayout.Space(10);
        }


        //内置图标
        for(int i =0; i< text.Length; i+=8)
        {
            GUILayout.BeginHorizontal();
            for (int j =0; j < 8; j++)
            {
                int index = i + j;
                if(index < text.Length)
                GUILayout.Button(EditorGUIUtility.IconContent(text[index]), GUILayout.Width(50), GUILayout.Height(30));
            }
            GUILayout.EndHorizontal();
        }
        



        GUILayout.EndScrollView();
    }
}

 

最后编辑:
作者:雨松MOMO
专注移动互联网,Unity3D游戏开发
捐 赠写博客不易,如果您想请我喝一杯星巴克的话?就进来看吧!

Unity3D研究院之系统内置系统图标大整理》有 12 条评论

  1. Dreamer说:

    Window如果加载不到图片 建议使用楼上哥们解决方案 源码40行稍微改一下,去掉字符串前后的空白字符GUILayout.Button(EditorGUIUtility.IconContent(text[index].Trim()), GUILayout.Width(50), GUILayout.Height(30));

  2. 啸风轩说:

    为什么一直报这个错:ArgumentException: Illegal characters in path. 请问雨松大大:如何反编译?谢谢

    • 焦中肖说:

      应该是 windows 上换行符导致的,可以将源码40行稍微改一下,去掉字符串前后的空白字符GUILayout.Button(EditorGUIUtility.IconContent(text[index].Trim()), GUILayout.Width(50), GUILayout.Height(30));

  3. 雨松大大~~~我们team现在iOS主工程已经完工,要集成unity项目进去,我看unity只能导出完整工程啊,怎样将unity嵌入iOS项目?拜谢~~~

  4. 貌似获取不到图标,是我的Unity版本的原因吗?

  5. 张洁勇说:

    突然感觉到一股蛋疼的味道…………

  6. 水岸上说:

    雨松大大用的什么反编译软件呢

  7. 肖行武说:

    赞!!!!![威武]

留下一个回复

你的email不会被公开。 必填项已用 * 标注。