Unity编辑器界面绘制之GUIStyle和GUISkin的使用

本文探讨如何通过GUIStyle定制精美界面,并介绍GUISkin的作用——本地化存储和调用GUI样式,提供实例代码和资源加载,带你领略界面设计的精湛之处。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

合理使用GUIStyle可以让自定义编辑器界面更加精致美观。
而GUISkin是用于本地化储存GUIStyle的,方便使用。

GUIStyle

代码示例

			private GUIStyle _tabStyle;
            _tabStyle = new GUIStyle();
            _tabStyle.alignment = TextAnchor.MiddleCenter; //字体对齐
            _tabStyle.fontSize = 16; //字体大小

            Texture2D tabNormal = Resources.Load<Texture2D>("Tab_Normal");
            Texture2D tabSelected = Resources.Load<Texture2D>("Tab_Selected");
            Font tabFont = Resources.Load<Font>("Oswald-Regular");

            _tabStyle.font = tabFont; //字体
            _tabStyle.fixedHeight = 40; //设置高度

            _tabStyle.normal.background = tabNormal; //默认状态下背景
            _tabStyle.normal.textColor = Color.grey; //默认状态下字体颜色

            _tabStyle.onNormal.background = tabSelected; 
            _tabStyle.onNormal.textColor = Color.black;
            _tabStyle.onFocused.background = tabSelected;  //选中状态下背景
            _tabStyle.onFocused.textColor = Color.black;  //选中状态下字体颜色
            
            _tabStyle.border = new RectOffset(18,18,20,4);  //设置边界防止图片变形(九宫格)
            
			index = GUILayout.Toolbar(index, _categoryLabels.ToArray(), _tabStyle);

加载的资源
在这里插入图片描述

效果图
在这里插入图片描述

GUISkin

现在我们知道GUIStyle的大致用法和效果了,而GUISkin就是方便我们使用保存GUIStyle的ScriptObject格式文件。
在这里插入图片描述
里面保存了GUIStyle的可调整属性。

使用方法

            GUISkin skin = Resources.Load<GUISkin>("LevelCreatorSkin");
            _titleStyle = skin.label;
### 实现 Unity 编辑器顶部工具栏的自定义 为了在 Unity 编辑器中扩展顶部工具栏,可以利用 `ToolbarCallback` 接口来注册回调函数,在该函数内绘制所需的按钮或其他 GUI 组件[^1]。 #### 使用 ToolbarExtender 插件简化操作 通过安装并引入 MarijnZ 的 [Toolbar Extender](https://github.com/marijnz/unity-toolbar-extender) 插件,开发者能够更加便捷地向工具栏添加新项。此插件提供了一个简单的方法用于订阅工具栏更新事件,并允许动态修改其内容而不必担心内部细节处理。 ```csharp using UnityEngine; using UnityEditor; using Marijn.Extensions.Editor; public class CustomToolbarExample : MonoBehaviour { private static bool _initialized = false; [InitializeOnLoadMethod] public static void Initialize() { if (!_initialized) { ToolbarExtender.LeftToolbarGUI.Add(OnToolbarGUI); _initialized = true; } } private static void OnToolbarGUI() { GUILayout.Label("Custom Label", EditorStyles.toolbarButton); if (GUILayout.Button("Click Me!", EditorStyles.toolbarButton)) { Debug.Log("Button clicked!"); } } } ``` 这段代码展示了如何创建一个新的静态方法作为工具栏回调的一部分。当编辑器启动时会自动调用 `Initialize()` 方法完成初始化工作;而每当工具栏被重绘时都会触发 `OnToolbarGUI()` 函数执行具体的 UI 渲染逻辑。 对于样式定制方面,则可以通过设置不同的参数来自定义按钮外观以及布局方式。例如调整字体大小、颜色或是背景图片等属性均能借助于 `GUIStyle` 或者预设好的 `EditorStyles` 来轻松达成目标[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我寄人间雪满头丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值