set gameobject Icons by Script
有很多时候我们需要在编辑器查看一个Gameobject的移动,有些人采用Gizoms类,可是如果不想用,可以使用U3D内置的Icon类。
但是如果想在脚本中设置而不是通过手动选择呢?
Google之,大神在民间
http://forum.unity3d.com/threads/editor-script-to-set-icons-impossible.187975/
一、代码
- public enum LabelIcon
- {
- Gray = ,
- Blue,
- Teal,
- Green,
- Yellow,
- Orange,
- Red,
- Purple
- }
- public enum Icon
- {
- CircleGray = ,
- CircleBlue,
- CircleTeal,
- CircleGreen,
- CircleYellow,
- CircleOrange,
- CircleRed,
- CirclePurple,
- DiamondGray,
- DiamondBlue,
- DiamondTeal,
- DiamondGreen,
- DiamondYellow,
- DiamondOrange,
- DiamondRed,
- DiamondPurple
- }
- private static GUIContent[] labelIcons;
- private static GUIContent[] largeIcons;
- public static void SetIcon(GameObject gObj, LabelIcon icon)
- {
- if (labelIcons == null)
- {
- labelIcons = GetTextures("sv_label_", string.Empty, , );
- }
- 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", , );
- }
- 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 });
- }
- 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 = ; index < count; ++index)
- {
- guiContentArray[index] = mi.Invoke(null, new object[] { baseName + (object)(startIndex + index) + postFix }) as GUIContent;
- }
- return guiContentArray;
- }
二、使用
- void Test()
- {
- GameObject go = new GameObject("");
- Util.SetIcon(go, LabelIcon.Red);
- }
- void OnGUI()
- {
- if (GUI.Button(new Rect(, , , ), "I am a button")) Test();
- }
set gameobject Icons by Script的更多相关文章
- Execution Order of Event Functions
In Unity scripting, there are a number of event functions that get executed in a predetermined order ...
- 【Unity3D游戏开发】之常用代码 (十二)
//创建一个名为"Player"的游戏物体 //并给他添加刚体和立方体碰撞器. player=new GameObject("Player"); player. ...
- Unity3d中SendMessage 用法简单笔记
Message相关有3条指令:SendMessage ("函数名",参数,SendMessageOptions) //GameObject自身的ScriptBroadcastMes ...
- 【转】Unity3D研究院之通过C#使用Advanced CSharp Messenger(五十)
http://www.xuanyusong.com/archives/2165 Advanced CSharp Messenger 属于C#事件的一种. 维基百科中由详细的说明http://wiki. ...
- Rule of write code with C# in Unity3d
Good Practice 普通的Public变量可以在inspect里显示,变量是可以在inspect里赋值并realtime反映在被attach到的GameObject上的.注意经典public ...
- Finite State Machine
Contents [hide] 1 Description 2 Components 3 C# - FSMSystem.cs 4 Example Description This is a Dete ...
- Unity3D脚本中文系列教程(十二)
http://dong2008hong.blog.163.com/blog/static/4696882720140313545332/ GameObject类,继承自Object Unity场景中所 ...
- Unity 生命周期
原文翻译: Execution Order of Event Functions 事件函数的执行顺序 Edit ...
- Unity Destory
Object.Destroy public static function Destroy(obj: Object, t: float = 0.0F): void; public static ...
随机推荐
- USB设备驱动
在Linux 内核中,使用usb_driver 结构体描述一个USB 设备驱动,usb_driver 结构体的定义如代码清单20.11 所示.代码清单20.11 usb_driver 结构体 stru ...
- SQL语句中各种数据类型转换方法总结
1.Access 每个函数都可以强制将一个表达式转换成某种特定数据类型. 语法 CBool(expression) CByte(expression) CCur(expression) CDate(e ...
- 菜鸟学习Struts——Scope属性
一.概念. 在Action映射配置中,Scope属性可以取值为:request或session.Scope属性表示:Struts框架在将 ActionForm对象(与目标Action匹配的Ac ...
- linux kernel 0.11 head
head的作用 注意:bootsect和setup汇编采用intel的汇编风格,而在head中,此时已经进入32位保护模式,汇编的采用的AT&T的汇编语言,编译器当然也就变成对应的编译和连接器 ...
- Mysql数据库基本配置
一 数据库基本配置包括编码方式 (安装环境是在linux下) 1.1 进入数据库 开启数据库服务:service mysqld start/restart(如果开启话可以重启) 关闭数据库服务:ser ...
- OpenStack:安装Neutron与provider network
1. 安装(1)Install Networking services on a dedicated network node# apt-get install neutron-server neut ...
- Linux开机启动程序详解
Linux开机启动程序详解我们假设大家已经熟悉其它操作系统的引导过程,了解硬件的自检引导步骤,就只从Linux操作系统的引导加载程序(对个人电脑而言通常是LILO)开始,介绍Linux开机引导的步骤. ...
- Karaf 依赖equinox and felix,karaf 本Apache的很多项目作为基础框架
6月17日是Apache Karaf作为Apache顶级项目.Karaf是个运行时包,包含了一个OSGi框架(Equinox或Felix).一个命令shell(Felix Gogo)及默认情况下内置的 ...
- 条款38:通过聚合设计has-a或者is-implemented-in-terms-of
聚合:类型之间的一种关系,就是一种类型内含有另一种类型的变量. has-a: class Address { }; class PhoneNumber { }; class Person { publ ...
- 如何在github上fork一个项目来贡献代码以及同步原作者的修改
[-] 如何贡献自己的力量 如何让自己的项目与原作者的项目保持同步 作为一个IT人,通过github进行学习是最快的成长手 段.我们可以浏览别人的优秀代码.但只看不动手还是成长得很慢,因此为别人贡献代 ...