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的默认GUIStyle
        GUIStyle style = GUI.skin.button;
        //下面开始修改
        style.fontStyle = FontStyle.Italic;//文字是斜体
        style.fontSize = 20;//文字大小20
        style.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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/332896.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

visual studio的安装及scanf报错的解决

visual studio是一款很不错的c语言编译器 下载地址&#xff1a;官网 点击后跳转到以下界面 下滑后点击下载Vasual Sutdio&#xff0c;选择社区版即可 选择位置存放下载文件后&#xff0c;即可开始安装 安装时会稍微等一小会儿。然后会弹出这个窗口&#xff0c;我们选择安装位…

OpenGL DIR

Mesa简介-CSDN博客 Mesa, also called Mesa3D and The Mesa 3D Graphics Library, is an open source software implementation of OpenGL, Vulkan, and other graphics API specifications. Mesa translates these specifications to vendor-specific graphics ha…

网络安全 | 苹果承认 GPU 安全漏洞存在,iPhone 12、M2 MacBook Air 等受影响

1 月 17 日消息&#xff0c;苹果公司确认了近期出现的有关 Apple GPU 存在安全漏洞的报告&#xff0c;并承认 iPhone 12 和 M2 MacBook Air 受影响。 该漏洞可能使攻击者窃取由芯片处理的数据&#xff0c;包括与 ChatGPT 的对话内容等隐私信息。 安全研究人员发现&#xff0c;…

IntelliJ IDEA 中输出乱码解决

最近tomcat突然在控制台输出乱码&#xff0c;各种乱码问题&#xff0c;查阅大量的资料&#xff0c;最终得以解决. IDEA控制台输出乱码 问题一&#xff1a;idea中tomcat控制台输出乱码 运行本地的tomcat\bin\start.bat文件页面显示正常 在idea中显示乱码 解决&#xff1a; 根…

【C++】:STL序列式容器list源码剖析

一、list概述 总的来说&#xff1a;环形双向链表 特点&#xff1a; 底层是使用链表实现的&#xff0c;支持双向顺序访问 在list中任何位置进行插入和删除的速度都很快 不支持随机访问&#xff0c;为了访问一个元素&#xff0c;必须遍历整个容器 与其他容器相比&#xff0c;额外…

数据结构之栈的基本操作

该顺序栈涉及到了存储整型数据的顺序栈还有存储字符型数据的顺序栈 实现的功能有&#xff1a;入栈、出栈、判断是否为空栈、求栈的长度、清空栈、销毁栈、得到栈顶元素 此外根据上述功能&#xff0c;编写了数值转换&#xff08;十进制转化八进制&#xff09;方法、括号匹配方法…

电梯节能落座-智慧停车场️,电梯不仅可载人也可以载汽车!

电梯不仅可载人也可以载汽车哦&#xff01; 在北京市丰台区&#xff0c;有这么一个智慧停车场&#x1f17f;️ &#xff0c;共298个停车位&#xff0c;全部智能一体化&#xff0c;简直是“豪华” “智能” 的象征。 523能源&#xff1a;小伍&#xff0c;你跑题了... 小伍&am…

儿童用什么样的台灯比较好?精选适合儿童使用的台灯

现在的青少年儿童大多数都是存在视力问题的&#xff0c;而且近视的年龄也越来越小&#xff0c;就拿我身边的朋友来说&#xff0c;孩子刚上小学就已经戴上了厚厚的近视眼镜了。因此很多家庭也开始重视孩子的历史健康问题&#xff0c;尤其是学习时用的那盏台灯。要知道现在的孩子…

JS中的File(四):文件流Streams API使用详解

目录 一、流的原理 二、流的分类 1、可读流&#xff08;ReadableStream&#xff09; 3、转换流&#xff08;TransformStream&#xff09; 三、流中的Request和Response对象 四、综合应用 PS&#xff1a;涉及到一些基本的文件操作和格式内容知识&#xff0c;可以进入我的主…

深度学习(2)--卷积神经网络(CNN)

卷积神经网络&#xff08;Convolutional Neural Networks&#xff09;是一种深度学习模型或类似于人工神经网络的多层感知器&#xff0c;常用来分析视觉图像。 一.卷积神经网络基础概念 传统网络是二维的&#xff0c;而卷积网络是三维的。 例如32x32x3的图片&#xff0c;在传…

阿里云云原生弹性方案:用弹性解决集群资源利用率难题

作者&#xff1a;赫曦 随着上云的认知更加普遍&#xff0c;我们发现除了以往占大部分的互联网类型的客户&#xff0c;一些传统的企业&#xff0c;一些制造类的和工业型企业客户也都开始使用云原生的方式去做 IT 架构的转型&#xff0c;提高集群资源使用率也成为企业上云的一致…

告别繁琐配置!JVS低代码逻辑引擎让你轻松实现高效数据处理

在当今高度数字化的世界中&#xff0c;逻辑引擎作为数据处理和业务逻辑的核心组件&#xff0c;其重要性不言而喻。它不仅关乎企业数据的准确处理&#xff0c;还影响着业务决策的效率和准确性。为了确保逻辑引擎的正常运行和准确性&#xff0c;配置和测试环节显得尤为重要。 本…

C++ 类与对象Oop

类与对象Oop 一、类&#xff1a;用户定义的数据类型&#xff0c;用于封装数据和方法1.1 对比结构体警告-->主要目的&#xff1a;初始化 1.2 定义类的过程并定义一个对象1.2.1 定义类例子 1.2.2 定义一个对象1.2.3 注意事项例子1.2.4 分成头文件和源文件的方式&#xff08;0&…

k8s之对外服务ingress

一、service 1、service作用 ①集群内部&#xff1a;不断跟踪pod的变化&#xff0c;不断更新endpoint中的pod对象&#xff0c;基于pod的IP地址不断变化的一种服务发现机制&#xff08;endpoint存储最终对外提供服务的IP地址和端口&#xff09; ②集群外部&#xff1a;类似负…

canal调度控制器CanalController源码分析

canal调度控制器初始化&#xff1a; public CanalController(final Properties properties) 1. 初始化instance公共全局配置&#xff1a; canal.instance.global.(mode、lazy、manager.address以及spring.xml&#xff0c;并放入内存 InstanceConfig globalInstanceConfig; …

看完买,开放式耳机质量榜单:南卡夺冠、韶音第5、Cleer排第7

​作为一名拥有丰富经验的开放式耳机用户&#xff0c;我想在此提醒大家&#xff0c;选择耳机时&#xff0c;千万不要盲目跟风或过于信赖所谓的“网红”或“大牌产品”。毕竟&#xff0c;每个人的需求和使用环境都是独一无二的&#xff0c;因此&#xff0c;适合自己的耳机才是最…

AP5191DC-DC宽电压LED降压恒流驱动器

产品描述 AP5191是一款PWM工作模式,高效率、外围 简 单、外置功率MOS管&#xff0c;适用于4.5-150V输入的高 精度降压LED恒流驱动芯片。输出最大功率150W&#xff0c; 最大电流6A。 AP5191可实现线性调光和PWM调光&#xff0c;线性 调 光脚有效电压范围0.55-2.6V. AP519…

centos7 arm服务器编译安装PaddlePaddle

前言 随着国产服务器发展&#xff0c;部署项目需要用在国产服务器上&#xff0c;官方教程里面很多没有讲解到&#xff0c;安装过程中出现了各种各样的问题&#xff0c;以下是对官方教程的补充&#xff0c;有什么问题&#xff0c;欢迎指正&#xff01; 一、环境准备 gcc: 8.2版…

(工具变量)各地区-距沿海港口最短距离汇总数据集

全国各省距沿海港口最短距离数据提供了中国各省份与最近海港之间的最短地理距离信息。这些数据对于理解和分析中国各省的地理优势、物流效率以及对外贸易潜力有一定帮助。沿海港口作为国际贸易的重要节点&#xff0c;其距离对于省份的出口入口物流成本、运输时间以及总体贸易便…

vue $attrs和$listenners

Vue2.x 中的a t t r s 和 attrs和attrs和listeners 或许很多Vue小白跟我一样, 在之前不太了解a t t r s 和 attrs和attrs和listenners这两个API是干嘛的, 甚至没有听过或者使用过。下面我来浅述一下我对这两个API的理解。 下文将基于下面这张图片来进行解释&#xff0c;现在我…