• QQ
  • nahooten@sina.com
  • 常州市九洲新世界花苑15-2

游戏开发

Unity3D通过脚本修改游戏对象图标Select Icon

原创内容,转载请注明原文网址:http://homeqin.cn/a/wenzhangboke/jishutiandi/youxikaifa/2018/1203/220.html

Unity3D通过脚本修改游戏对象图标Select Icon

 

做编辑器的时候需要修改游戏对象游戏图标,方便美术人员和编辑,下面我们常州微信小程序开发网站专家-幻天网络就教大家如何通过脚本来修改游戏对象图标,方法其实很容易,有不了解的可以看看。

 

 

 

新建IconManager.cs

using System;

using System.Reflection;

using UnityEditor;

using UnityEngine;

/// <summary>

/// 对象Icon管理设置

/// </summary>

public class IconManager

    #region 数据定义

    private static GUIContent[] labelIcons;

    private static GUIContent[] largeIcons;

    /// <summary>

    /// Label类型icon 显示文字的

    /// </summary>

    public enum LabelIcon

   

        Gray = 0,

        Blue,

        Teal,

        Green,

        Yellow,

        Orange,

        Red,

        Purple

   

    /// <summary>

    /// 其他icon不显示文字

    /// </summary>

    public enum Icon

   

        CircleGray = 0,

        CircleBlue,

        CircleTeal,

        CircleGreen,

        CircleYellow,

        CircleOrange,

        CircleRed,

        CirclePurple,

        DiamondGray,

        DiamondBlue,

        DiamondTeal,

        DiamondGreen,

        DiamondYellow,

        DiamondOrange,

        DiamondRed,

        DiamondPurple

   

    #endregion

    #region 外部接口

    public static void SetIcon(GameObject gObj, LabelIcon icon)

   

        if (labelIcons == null)

       

            labelIcons = GetTextures("sv_label_", string.Empty, 0, 8);

       

        SetIcon(gObj, labelIcons[(int)icon].image as Texture2D);

   

    public static void SetIcon(GameObject gObj, Icon icon)

   

        if (largeIcons == null)

       

            largeIcons = GetTextures("sv_icon_dot", "_pix16_gizmo", 0, 16);

       

        SetIcon(gObj, largeIcons[(int)icon].image as Texture2D);

   

    private static void SetIcon(GameObject gObj, Texture2D texture)

   

        var ty = typeof(EditorGUIUtility);

        var mi = ty.GetMethod("SetIconForObject", BindingFlags.NonPublic | BindingFlags.Static);

        mi.Invoke(null, new object[] gObj, texture );

   

    #endregion

    #region 内部

    private static GUIContent[] GetTextures(string baseName, string postFix, int startIndex, int count)

   

        GUIContent[] guiContentArray = new GUIContent[count];

        var t = typeof(EditorGUIUtility);

        var mi = t.GetMethod("IconContent", BindingFlags.Public | BindingFlags.Static, null, new Type[] typeof(string) , null);

        for (int index = 0; index < count; ++index)

       

            guiContentArray[index] = mi.Invoke(null, new object[] baseName + (object)(startIndex + index) + postFix ) as GUIContent;

       

        return guiContentArray;

   

    #endregion



上篇:上一篇:LuaFramework-打包AssetBundle工具
下篇:下一篇:Unity3D中的Coroutine详解