【无标题】Unity随手记——给Scene窗口内的物体设置SelectIcon

这篇具有很好参考价值的文章主要介绍了【无标题】Unity随手记——给Scene窗口内的物体设置SelectIcon。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

由于开发项目,某个Scene场景内会有很多的静态物体。我们在Hierarchy窗口中选中后,虽然有三维坐标显示在物体上,但是也很难分辨。

于是unity提供了给编辑物体设置icon。

【无标题】Unity随手记——给Scene窗口内的物体设置SelectIcon

 这些icon大家都很熟悉了吧。
问题来了,如果是一个两个物体,我手动设置下没问题。如果几十个,或者更多呢?

“写代码啊!”有些同学都会抢答了。

于是我在网上百度下,有了以下的代码:

    private static GUIContent[] labelIcons;
	private static GUIContent[] largeIcons;
	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", System.Reflection.BindingFlags.Public | System.Reflection.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;
	}
	private static void SetIcon(GameObject go, LabelIcon icon)
	{
		if (labelIcons == null)
		{
			labelIcons = GetTextures("sv_label_", string.Empty, 0, 8);
		}
		SetIcon(go, labelIcons[(int)icon].image as Texture2D);
	}
	private static void SetIcon(GameObject go, Icon icon)
	{
		if (largeIcons == null)
		{
			labelIcons = GetTextures("sv_icon_dot", "_pix16_gizmo", 0, 16);
		}
		SetIcon(go, largeIcons[(int)icon].image as Texture2D);
	}
	private static void SetIcon(GameObject go, Texture2D texture)
	{
		var ty = typeof(EditorGUIUtility);
		var mi = ty.GetMethod("SetIconForObject", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Static);
		mi.Invoke(null, new object[] {go, texture });
	}

	/// <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
	}

是不是很牛掰!后来在大神的指导下,就用了以下两句:

		var iconContent = EditorGUIUtility.IconContent("sv_icon_dot14_pix16_gizmo");
		EditorGUIUtility.SetIconForObject(node_start, (Texture2D)iconContent.image);

就搞定了。百度害人啊!

总结下,前半部分的代码适合早期的unity版本。那两句的代码,适合新版本的unity。

提供下 EditorGUIUtility.IconContent方法的可用参数字符串(卡布斯尼):

Shttps://github.com/halak/unity-editor-icons文章来源地址https://www.toymoban.com/news/detail-408815.html

到了这里,关于【无标题】Unity随手记——给Scene窗口内的物体设置SelectIcon的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • unity scene场景调整好后让game窗口的视角与scene相同

    调整scene中场景视角 选中相机 然后 如果要实现相反的功能  即scene的视角与game的一样则 选中相机

    2024年02月04日
    浏览(26)
  • 【学习笔记】Unity基础(十)【Unity界面之Scene窗口工具栏】

    转载请注明出处:🔗https://blog.csdn.net/weixin_44013533/article/details/131707918 主要参考: 官方手册 Scene视图 注:本文使用的unity版本是2021.3.25f Scene 视图是正在创建的世界的交互式视图。Scene 视图可用于选择和定位景物、角色、摄像机、光源和所有其他类型的游戏对象。 本节将详细

    2024年02月06日
    浏览(36)
  • Unity 3D 一些对Scene窗口的调整以及摄像头的调整技巧

    入门小菜鸟,希望像做笔记记录自己学的东西,也希望能帮助到同样入门的人,更希望大佬们帮忙纠错啦~侵权立删。 目录 1、如何随心所欲地调整我们所看到的Scene窗口的角度呢? 2、如何让Scene窗口和Main Camera看到的一样? 今天初学Unity,刚开始就被Scene窗口和Main Camera整活

    2023年04月20日
    浏览(25)
  • MAUI桌面端标题栏设置和窗口调整

    如果你现在开始学习并使用MAUI开发桌面端,那么接下来的问题相信你都会遇到并且会想着尝试找方法解决它 本人在使用目前VS2022最新版17.4Professional版创建新的MAUI APP 基于.NET6.0项目时,发现完全找不到根wpf一样的WindowStyle或者ResizeMode这样的属性,有点强迫症,一定要把这个标

    2024年02月12日
    浏览(26)
  • pyqt5设置标题栏三个按钮以及窗口大小

    组件也会受影响,范围0-1,0是全透明,1是不透明

    2024年02月13日
    浏览(37)
  • 笔记:Unity多相机场景下,物体显示常用设置

    1、主相机:MainCamera; 2、子相机:ClippingCamera、FieldViewCamera、UICamera: 注:为了减少干扰 每个子相机仅显示特定物体,不和主相机同时渲染; 每个物体也仅被唯一的相机渲染; 3、把子相机显示内容按不同先后顺序渲染到主相机里方法: (1)将子相机添加进MainCamera的Stack模

    2023年04月08日
    浏览(29)
  • Unity 设置无边框窗口

            最近在做窗口模式切换和设置分辨率,发现Unity只有设置窗口或全屏切换的API,没有设置无边框窗口的API。于是我就在在网上找到了一种设置方法。         注意,该方法仅限windows系统。         引用用windows的user32.dll库,调用库里的方法,来设置窗口无边框

    2024年04月08日
    浏览(30)
  • Unity 窗口化设置

    在Unity中要实现窗口化,具体设置如下: 在编辑器中,选择File - Build Settings。 在Player Settings中,找到Resolution and Presentation部分。 取消勾选\\\"Fullscreen Mode\\\",并选择\\\"Windowed\\\"。 设置游戏的目标分辨率,通常是一个固定的分辨率,比如1280x720或1920x1080。 如下图所示: 另外在Resoluti

    2024年04月22日
    浏览(27)
  • Unity打包窗口化放大、缩小、拖拽功能、无边框设置 C#

    Unity无边框设置、窗口化放大、缩小、拖拽 提示:PC端打包,测试尽量在打包后测试。 编辑器下测试会有意想不到的后果呦~~ [DllImport(\\\"user32.dll\\\")] 。 代码如下: 代码如下:注释详细,不懂就问哈 代码整体已贴出,功能亲测可用,欢迎学习交流。点赞+收藏+关注哦~

    2024年02月16日
    浏览(39)
  • Unity发布PC 设置窗口 无边框(显示win任务栏),或全屏无边框

    设置win窗口无边框,就需要对获得Win的窗口信息,所以需要调用Win32的API [DllImport(“user32.dll”)] Win32 API //并不是很全,如果在此没找到想要的函数,可点击Win32 API查找 c#调用Win32详解 //下面脚本中 可以设置 除任务栏外无边框,也可以设置全屏无边框 运行第一次 界面还是会出

    2024年02月12日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包