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

相关文章

java常见报错及解决方案总结

《java常见报错及解决方案总结》:本文主要介绍Java编程中常见错误类型及示例,包括语法错误、空指针异常、数组下标越界、类型转换异常、文件未找到异常、除以零异常、非法线程操作异常、方法未定义异常... 目录1. 语法错误 (Syntax Errors)示例 1:解决方案:2. 空指针异常 (NullPoi

Java反转字符串的五种方法总结

《Java反转字符串的五种方法总结》:本文主要介绍五种在Java中反转字符串的方法,包括使用StringBuilder的reverse()方法、字符数组、自定义StringBuilder方法、直接... 目录前言方法一:使用StringBuilder的reverse()方法方法二:使用字符数组方法三:使用自

Python依赖库的几种离线安装方法总结

《Python依赖库的几种离线安装方法总结》:本文主要介绍如何在Python中使用pip工具进行依赖库的安装和管理,包括如何导出和导入依赖包列表、如何下载和安装单个或多个库包及其依赖,以及如何指定... 目录前言一、如何copy一个python环境二、如何下载一个包及其依赖并安装三、如何导出requirem

Python中配置文件的全面解析与使用

《Python中配置文件的全面解析与使用》在Python开发中,配置文件扮演着举足轻重的角色,它们允许开发者在不修改代码的情况下调整应用程序的行为,下面我们就来看看常见Python配置文件格式的使用吧... 目录一、INI配置文件二、YAML配置文件三、jsON配置文件四、TOML配置文件五、XML配置文件

Rust格式化输出方式总结

《Rust格式化输出方式总结》Rust提供了强大的格式化输出功能,通过std::fmt模块和相关的宏来实现,主要的输出宏包括println!和format!,它们支持多种格式化占位符,如{}、{:?}... 目录Rust格式化输出方式基本的格式化输出格式化占位符Format 特性总结Rust格式化输出方式

Python中连接不同数据库的方法总结

《Python中连接不同数据库的方法总结》在数据驱动的现代应用开发中,Python凭借其丰富的库和强大的生态系统,成为连接各种数据库的理想编程语言,下面我们就来看看如何使用Python实现连接常用的几... 目录一、连接mysql数据库二、连接PostgreSQL数据库三、连接SQLite数据库四、连接Mo

Git提交代码详细流程及问题总结

《Git提交代码详细流程及问题总结》:本文主要介绍Git的三大分区,分别是工作区、暂存区和版本库,并详细描述了提交、推送、拉取代码和合并分支的流程,文中通过代码介绍的非常详解,需要的朋友可以参考下... 目录1.git 三大分区2.Git提交、推送、拉取代码、合并分支详细流程3.问题总结4.git push

Kubernetes常用命令大全近期总结

《Kubernetes常用命令大全近期总结》Kubernetes是用于大规模部署和管理这些容器的开源软件-在希腊语中,这个词还有“舵手”或“飞行员”的意思,使用Kubernetes(有时被称为“... 目录前言Kubernetes 的工作原理为什么要使用 Kubernetes?Kubernetes常用命令总

Python中实现进度条的多种方法总结

《Python中实现进度条的多种方法总结》在Python编程中,进度条是一个非常有用的功能,它能让用户直观地了解任务的进度,提升用户体验,本文将介绍几种在Python中实现进度条的常用方法,并通过代码... 目录一、简单的打印方式二、使用tqdm库三、使用alive-progress库四、使用progres

Python使用Colorama库美化终端输出的操作示例

《Python使用Colorama库美化终端输出的操作示例》在开发命令行工具或调试程序时,我们可能会希望通过颜色来区分重要信息,比如警告、错误、提示等,而Colorama是一个简单易用的Python库... 目录python Colorama 库详解:终端输出美化的神器1. Colorama 是什么?2.