Unity 编辑器篇|(九)编辑器美化类( GUIStyle、GUISkin、EditorStyles) (全面总结 | 建议收藏)

本文主要是介绍Unity 编辑器篇|(九)编辑器美化类( GUIStyle、GUISkin、EditorStyles) (全面总结 | 建议收藏),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

  • 1. GUIStyle
    • 1.1 参数总览
    • 1.2 样式代码
  • 2. GUISkin
    • 2.1 参数总览
    • 2.2 创建自定义Skin
  • 3. EditorStyles
    • 2.1 参数总览
    • 1.2 反射获取所有EditorStyles

1. GUIStyle

  • GUIStyle是一个用于定制GUI控件样式的类,它包含了控件的外观属性,如字体、颜色、背景等。开发者可以通过创建自定义的GUIStyle来改变UI控件的外观,以适应不同的需求和风格。GUIStyle不仅可以应用于Unity的旧版UI系统(IMGUI),还可以用于新版的UI系统。

1.1 参数总览

静态函数描述
active按下控件时的渲染设置。
alignment文本对齐。
border所有背景图像的边框。
clipping如何处理要渲染的内容太大而无法放入给定区域的情况。
contentOffset要应用于该 GUIstyle 的内容的像素偏移。
fixedHeight如果不为 0,则使用该样式呈现的任何 GUI 元素都将具有此处指定的高度。
fixedWidth如果不为 0,则使用该样式呈现的任何 GUI 元素都将具有此处指定的宽度。
focused元素具有键盘焦点时的渲染设置。
font用于渲染的字体。如果为 null,则改为使用当前 GUISkin 的默认字体。
fontSize要使用的字体大小(用于动态字体)。
fontStyle要使用的字体样式(用于动态字体)。
hover鼠标悬停在控件上时的渲染设置。
imagePositionGUIContent 的图像和文本的组合方式。
lineHeight具有该样式的文本行的高度,以像素为单位。(只读)
margin以该样式呈现的元素与任何其他 GUI 元素之间的边距。
name该 GUIStyle 的名称。用于根据名称获取 GUIStyle。
normal正常显示组件时的渲染设置。
onActive启用和按下元素时的渲染设置。
onFocused元素具有键盘焦点并且启用时的渲染设置。
onHover控件处于启用状态并且鼠标悬停在其上方时的渲染设置。
onNormal控件处于启用状态时的渲染设置。
overflow要添加到背景图像的额外空间。
padding从 GUIStyle 边缘到内容起始处的空间。
richText为文本格式标记启用 HTML 样式标记。
stretchHeight是否可以垂直拉伸该样式的 GUI 元素来改善布局效果?
stretchWidth是否可以水平拉伸该样式的 GUI 元素来改善布局效果?
wordWrap文本是否应该自动换行??

1.2 样式代码

using UnityEditor;
using UnityEngine;public class EditorGUIExample : EditorWindow
{[MenuItem("Window/styles")]public static void Test(){EditorWindow.GetWindow<EditorGUIExample>().Show();}void OnGUI(){//通过在GUISkin中获取button的默认GUIStyleGUIStyle style = GUI.skin.button;//下面开始修改style.fontStyle = FontStyle.Italic;//文字是斜体style.fontSize = 20;//文字大小20style.richText = true; //文字是否支持富文本GUILayout.Button("<color=red>我是红色的按钮</color>", style, GUILayout.Width(180));}
}

1

2. GUISkin

  • GUISkin是一个可应用于GUI的GUIStyle集合,它可以将样式应用于整个UI,而不是单独的控件本身。开发者可以通过创建自定义的GUISkin来定义一组相关的GUIStyle,然后在整个UI中应用这个GUISkin,以实现统一的外观效果。在Unity中,可以通过Project面板中的右键菜单创建GUISkin,并直接在Inspector面板中修改样式。

2.1 参数总览

静态函数描述
box GUI.Box控件默认使用的样式。
button GUI.Button控件默认使用的样式。
customStyles针对特定需求的 GUI 样式的数组。
font用于所有样式的默认字体。
horizontalScrollbarGUI.HorizontalScrollbar 控件的背景部分默认使用的样式。
horizontalScrollbarLeftButtonGUI.HorizontalScrollbar 控件上的向左按钮默认使用的样式。
horizontalScrollbarRightButtonGUI.HorizontalScrollbar 控件上的向右按钮默认使用的样式。
horizontalScrollbarThumbGUI.HorizontalScrollbar 控件中用于拖动的滑块默认使用的样式。
horizontalSliderGUI.HorizontalSlider 控件的背景部分默认使用的样式。
horizontalSliderThumbGUI.HorizontalSlider 控件中用于拖动的滑块默认使用的样式。
labelGUI.Label 控件默认使用的样式。
scrollView滚动视图控件(请参阅 GUI.BeginScrollView)的背景默认使用的样式。
settings定义控件应如何配置该皮肤使用的通用设置。
textAreaGUI.TextArea 控件默认使用的样式。
textFieldGUI.TextField 控件默认使用的样式。
toggleGUI.Toggle 控件默认使用的样式。
verticalScrollbarGUI.VerticalScrollbar 控件的背景部分默认使用的样式。
verticalScrollbarDownButtonGUI.VerticalScrollbar 控件上的向下按钮默认使用的样式。
verticalScrollbarThumbGUI.VerticalScrollbar 控件中用于拖动的滑块默认使用的样式。
verticalScrollbarUpButtonGUI.VerticalScrollbar 控件上的向上按钮默认使用的样式。
verticalSliderGUI.VerticalSlider 控件的背景部分默认使用的样式。
verticalSliderThumbGUI.VerticalSlider 控件中用于拖动的滑块默认使用的样式。
window窗口控件(另请参阅:GUI.Window)默认使用的样式。

2.2 创建自定义Skin

1
2

            GUISkin skin = Resources.Load<GUISkin>("New GUISkin");_titleStyle = skin.label;
  • 要使用自定义的GUISkin,只需要创建一个GUISkin字段,然后将自定义的GUISkin文件拖入。
  • 最后设置GUI.Skin = MyCustomSkin就OK。 要将GUI.Skin设为默认的,只需GUI.Skin=null。
  • 并且有了GUI.Skin后,Skin里面有许多的Style类型。看见GUIStyle类型的参数时,我们是可以直接传入GUI.Skin中GUIStyle的名称字符串的,系统自动帮我选取字符串对应的GUIStyle。

3. EditorStyles

  • EditorStyles是Unity编辑器中用于定制编辑器界面的样式类。它包含了编辑器界面中各种控件的样式属性,如工具栏、菜单、对话框等。开发者可以通过创建自定义的EditorStyles来改变编辑器的界面风格,以适应不同的需求和美观度。

2.1 参数总览

静态函数描述
boldFont加粗字体。
boldLabel粗体标签的样式。
centeredGreyMiniLabel采用小号字体且字体以灰色居中显示的标签的样式。
colorField用于 Color 字段的标题的样式。
foldout用于 EditorGUI.Foldout 的标题的样式。
foldoutHeader用于 EditorGUILayout.BeginFoldoutHeaderGroup 的标题的样式。
foldoutHeaderIcon用于 EditorGUILayout.BeginFoldoutHeaderGroup 的图标的样式。
foldoutPreDrop用于 EditorGUI.Foldout 的标题的样式。
helpBox用于 EditorGUI.HelpBox 的背景框的样式。
iconButtonStyle used for a standalone icon button.
inspectorDefaultMargins将内容包含在采用此样式的垂直组中,以获取检视面板中使用的默认边距。
inspectorFullWidthMargins将内容包含在采用此样式的垂直组中,以获取检视面板中的全宽边距。
label用于采用前缀标签的所有 EditorGUI 重载上标记的样式。
largeLabel采用大号字体的标签的样式。
layerMaskField用于层遮罩的标题的样式。
linkLabel用于链接的样式。
miniBoldFont小号加粗字体。
miniBoldLabel粗体小标签的样式。
miniButton用于独立平台小按钮的样式。
miniButtonLeft用于水平按钮组中最左边按钮的样式。
miniButtonMid用于水平组中中间按钮的样式。
miniButtonRight用于水平组中最右边按钮的样式。
miniFont小号字体。
miniLabel采用小号字体的标签的样式。
miniPullDown下拉选单控件使用的样式。
miniTextField较小的文本字段。
numberField用于编辑器的数字字段的样式。
objectField用于对象字段的标题的样式。
objectFieldMiniThumb用于具有缩略图的对象字段的样式(例如纹理)。
objectFieldThumb用于对象字段中 Select 按钮的标题的样式。
popup用于 EditorGUI.Popup、EditorGUI.EnumPopup 的样式。
radioButton用于单选按钮的样式。
selectionRectStyle used to draw a marquee selection rect in the SceneView.
standardFont标准字体。
textArea用于 EditorGUI.TextArea 的样式。
textField用于 EditorGUI.TextField 的样式。
toggle用于 EditorGUI.Toggle 的标题的样式。
toggleGroup用于 EditorGUILayout.BeginToggleGroup 的标题的样式。
toolbar窗口顶部的工具栏背景。
toolbarButton工具栏中按钮和开关的样式。
toolbarDropDown工具栏下拉列表。
toolbarPopup工具栏弹出窗口。
toolbarSearchField工具栏搜索字段。
toolbarTextField工具栏文本字段。
whiteBoldLabel白色粗体标签的样式。
whiteLabel白色标签的样式。
whiteLargeLabel白色大标签的样式。
whiteMiniLabel白色小标签的样式。
wordWrappedLabel自动换行标签的样式。
wordWrappedMiniLabel自动换行小标签的样式。

1.2 反射获取所有EditorStyles

using System.Collections.Generic;
using System.Reflection;
using UnityEditor;
using UnityEngine;public class EditorGUIExample : EditorWindow
{static List<GUIStyle> styles = null;[MenuItem("Window/styles")]public static void Test(){EditorWindow.GetWindow<EditorGUIExample>("styles");styles = new List<GUIStyle>();foreach (PropertyInfo fi in typeof(EditorStyles).GetProperties(BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic)){object o = fi.GetValue(null, null);if (o.GetType() == typeof(GUIStyle)){styles.Add(o as GUIStyle);}}}public Vector2 scrollPosition = Vector2.zero;void OnGUI(){scrollPosition = GUILayout.BeginScrollView(scrollPosition);for (int i = 0; i < styles.Count; i++){GUILayout.Label("EditorStyles." + styles[i].name, styles[i]);}GUILayout.EndScrollView();}}

2

这篇关于Unity 编辑器篇|(九)编辑器美化类( GUIStyle、GUISkin、EditorStyles) (全面总结 | 建议收藏)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/622384

相关文章

全面掌握 SQL 中的 DATEDIFF函数及用法最佳实践

《全面掌握SQL中的DATEDIFF函数及用法最佳实践》本文解析DATEDIFF在不同数据库中的差异,强调其边界计算原理,探讨应用场景及陷阱,推荐根据需求选择TIMESTAMPDIFF或inte... 目录1. 核心概念:DATEDIFF 究竟在计算什么?2. 主流数据库中的 DATEDIFF 实现2.1

Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式

《Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式》本文详细介绍如何使用Java通过JDBC连接MySQL数据库,包括下载驱动、配置Eclipse环境、检测数据库连接等关键步骤,... 目录一、下载驱动包二、放jar包三、检测数据库连接JavaJava 如何使用 JDBC 连接 mys

Java操作Word文档的全面指南

《Java操作Word文档的全面指南》在Java开发中,操作Word文档是常见的业务需求,广泛应用于合同生成、报表输出、通知发布、法律文书生成、病历模板填写等场景,本文将全面介绍Java操作Word文... 目录简介段落页头与页脚页码表格图片批注文本框目录图表简介Word编程最重要的类是org.apach

JavaSE正则表达式用法总结大全

《JavaSE正则表达式用法总结大全》正则表达式就是由一些特定的字符组成,代表的是一个规则,:本文主要介绍JavaSE正则表达式用法的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录常用的正则表达式匹配符正则表China编程达式常用的类Pattern类Matcher类PatternSynta

Linux中SSH服务配置的全面指南

《Linux中SSH服务配置的全面指南》作为网络安全工程师,SSH(SecureShell)服务的安全配置是我们日常工作中不可忽视的重要环节,本文将从基础配置到高级安全加固,全面解析SSH服务的各项参... 目录概述基础配置详解端口与监听设置主机密钥配置认证机制强化禁用密码认证禁止root直接登录实现双因素

全面解析MySQL索引长度限制问题与解决方案

《全面解析MySQL索引长度限制问题与解决方案》MySQL对索引长度设限是为了保持高效的数据检索性能,这个限制不是MySQL的缺陷,而是数据库设计中的权衡结果,下面我们就来看看如何解决这一问题吧... 目录引言:为什么会有索引键长度问题?一、问题根源深度解析mysql索引长度限制原理实际场景示例二、五大解决

MySQL追踪数据库表更新操作来源的全面指南

《MySQL追踪数据库表更新操作来源的全面指南》本文将以一个具体问题为例,如何监测哪个IP来源对数据库表statistics_test进行了UPDATE操作,文内探讨了多种方法,并提供了详细的代码... 目录引言1. 为什么需要监控数据库更新操作2. 方法1:启用数据库审计日志(1)mysql/mariad

Python循环结构全面解析

《Python循环结构全面解析》循环中的代码会执行特定的次数,或者是执行到特定条件成立时结束循环,或者是针对某一集合中的所有项目都执行一次,这篇文章给大家介绍Python循环结构解析,感兴趣的朋友跟随... 目录for-in循环while循环循环控制语句break语句continue语句else子句嵌套的循

Redis 配置文件使用建议redis.conf 从入门到实战

《Redis配置文件使用建议redis.conf从入门到实战》Redis配置方式包括配置文件、命令行参数、运行时CONFIG命令,支持动态修改参数及持久化,常用项涉及端口、绑定、内存策略等,版本8... 目录一、Redis.conf 是什么?二、命令行方式传参(适用于测试)三、运行时动态修改配置(不重启服务

Python中图片与PDF识别文本(OCR)的全面指南

《Python中图片与PDF识别文本(OCR)的全面指南》在数据爆炸时代,80%的企业数据以非结构化形式存在,其中PDF和图像是最主要的载体,本文将深入探索Python中OCR技术如何将这些数字纸张转... 目录一、OCR技术核心原理二、python图像识别四大工具库1. Pytesseract - 经典O