有很多时候我们需要在编辑器查看一个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的更多相关文章

  1. Execution Order of Event Functions

    In Unity scripting, there are a number of event functions that get executed in a predetermined order ...

  2. 【Unity3D游戏开发】之常用代码 (十二)

    //创建一个名为"Player"的游戏物体 //并给他添加刚体和立方体碰撞器. player=new GameObject("Player"); player. ...

  3. Unity3d中SendMessage 用法简单笔记

    Message相关有3条指令:SendMessage ("函数名",参数,SendMessageOptions) //GameObject自身的ScriptBroadcastMes ...

  4. 【转】Unity3D研究院之通过C#使用Advanced CSharp Messenger(五十)

    http://www.xuanyusong.com/archives/2165 Advanced CSharp Messenger 属于C#事件的一种. 维基百科中由详细的说明http://wiki. ...

  5. Rule of write code with C# in Unity3d

    Good Practice 普通的Public变量可以在inspect里显示,变量是可以在inspect里赋值并realtime反映在被attach到的GameObject上的.注意经典public ...

  6. Finite State Machine

    Contents [hide]  1 Description 2 Components 3 C# - FSMSystem.cs 4 Example Description This is a Dete ...

  7. Unity3D脚本中文系列教程(十二)

    http://dong2008hong.blog.163.com/blog/static/4696882720140313545332/ GameObject类,继承自Object Unity场景中所 ...

  8. Unity 生命周期

    原文翻译:            Execution Order of Event Functions            事件函数的执行顺序                        Edit ...

  9. Unity Destory

    Object.Destroy     public static function Destroy(obj: Object, t: float = 0.0F): void; public static ...

随机推荐

  1. 第二十章 数据访问(In .net4.5) 之 使用LINQ

    1. 概述 .net3.5中新添加给C#的LINQ查询,提供了直观便捷的数据查询方式.并且支持多种数据源的查询. 本章介绍标准的LINQ操作,如何用最优的方式使用LINQ 以及 LINQ to XML ...

  2. 安装wampserver出现“The Program can't start because MSVCR110.dll is missing from your computer. Try reinstalling the program to fix this problem”

    问题描述: 今天安装wampserver的时候出现"The Program can't start because MSVCR110.dll is missing from your com ...

  3. Python2安装说明

    1.Python版本 Python 2.x的版本的,被称为Python2:是目前用的最广泛的,比如Python 2.7.12. Python 3.x的版本的,被称为Python3:是最新的版本的,比如 ...

  4. wpf 在引用外部的资源字典

    启动的APP.xaml

  5. .net控件事件中的Sender

    private void button2_Click(object sender, RoutedEventArgs e) { } 最近看WPF内容,回顾下.net大家天天都在用,却不是十分关注的一个对 ...

  6. Redis 配置文件 redis.conf 项目详解

    Redis.conf 配置文件详解 # [Redis](http://yijiebuyi.com/category/redis.html) 配置文件 # 当配置中需要配置内存大小时,可以使用 1k, ...

  7. iPhone的震动 基于SDK8.0 Swift实现

    导入AudioToolbox.framework包 在swift文件中  import AudioToolbox AudioServicesPlaySystemSound(SystemSoundID. ...

  8. ubuntu添加自定义vga输出分辨率

    Ubuntu有点折腾人....但是在折腾之后发现它更加方便,而且懂得更多的东西 最近在调试一个视频采集芯片的驱动,主要是接收vga输入和hdmi输入,在实验的过程中遇到了一个恼火的问题,就是同一台电脑 ...

  9. Unity3D定制新建C#文件的头描述

    1. 修改模板内容如下: MAC:Unity.app/Contents/Resources/ScriptTemplates/81-C# Script-NewBehaviourScript.cs.txt ...

  10. xml之基础了解

    1.简介 1>什么XML语言(eXtensible Markup Language) 可扩展标记语言XML是SGML的子集,其目标是允许普通的SGML在Web上以目前HTML的方式被服务.接受和 ...