1.GUISkin
2.GUIStyle
1.GUISkin
csharp
复制代码
GUISkin本质是一个资源文件, 里面封装了各种GUIStyle(样式), 每个GUIStyle对应一种GUI控件(如Button, Lable), 可以
设置控件的字体, 颜色, 背景图, 大小, 边距等样式属性,
a.根据属性获取GUISkin内置的样式
csharp
复制代码
using UnityEngine;
public class GetBuiltinGUIStyle : MonoBehaviour
{
void OnGUI()
{
// 1. 直接获取内置的【按钮样式】并使用
GUIStyle builtinButtonStyle = GUI.skin.button;
// 用内置按钮样式绘制按钮
if (GUI.Button(new Rect(50, 50, 200, 60), "内置默认按钮", builtinButtonStyle))
{
Debug.Log("点击了内置样式的按钮");
}
// 2. 直接获取内置的【标签样式】并使用
GUIStyle builtinLabelStyle = GUI.skin.label;
// 甚至可以临时修改内置样式(注意:修改后全局生效!)
builtinLabelStyle.fontSize = 20; // 把内置标签字体改大
builtinLabelStyle.normal.textColor = Color.gray; // 文本改灰色
GUI.Label(new Rect(50, 130, 200, 50), "修改后的内置标签样式", builtinLabelStyle);
// 3. 获取内置的【输入框样式】
GUIStyle builtinTextFieldStyle = GUI.skin.textField;
string input = GUI.TextField(new Rect(50, 200, 200, 50), "内置输入框", builtinTextFieldStyle);
// 4. 获取内置的【窗口样式】(绘制窗口时使用)
GUIStyle builtinWindowStyle = GUI.skin.window;
GUI.Window(0, new Rect(50, 280, 300, 200), (id) => {
GUI.Label(new Rect(20, 30, 260, 30), "内置窗口样式");
}, "内置窗口", builtinWindowStyle);
}
}
csharp
复制代码
b.通过GetStyle按名称获取内置样式
using UnityEngine;
public class GetBuiltinStyleByName : MonoBehaviour
{
void OnGUI()
{
// 按名称获取内置按钮样式(等价于GUI.skin.button)
GUIStyle buttonStyle = GUI.skin.GetStyle("Button");
GUI.Button(new Rect(50, 50, 200, 60), "按名称获取的按钮", buttonStyle);
// 按名称获取内置进度条样式(无直接属性,需用GetStyle)
GUIStyle progressBarStyle = GUI.skin.GetStyle("ProgressBar");
// 绘制进度条(0.5表示50%进度)
GUI.HorizontalSlider(new Rect(50, 130, 200, 30), 0.5f, 0, 1, progressBarStyle);
// 按名称获取内置滚动条样式
GUIStyle scrollbarStyle = GUI.skin.GetStyle("Scrollbar");
}
}
2.GUIStyle
csharp
复制代码
GUIStyle表示"单个GUI控件的样式模板"
a.GUIStyle的核心属性 - 文本样式
csharp
复制代码
b.GUIStyle的核心属性 - 背景样式
csharp
复制代码
c.GUIStyle的核心属性 - 布局样式
csharp
复制代码
d.GUIStyle的核心属性 - 边框样式
csharp
复制代码
using UnityEngine;
public class FullCustomGUIStyle : MonoBehaviour
{
public Texture2D btnNormalBg; // 常态背景图
public Texture2D btnHoverBg; // 悬停背景图
public Font customFont;
private GUIStyle fullCustomStyle;
void Start()
{
fullCustomStyle = new GUIStyle(); // 从零创建样式
// 文本样式
fullCustomStyle.font = customFont;
fullCustomStyle.fontSize = 18;
fullCustomStyle.normal.textColor = Color.black;
fullCustomStyle.hover.textColor = Color.red;
fullCustomStyle.alignment = TextAnchor.MiddleCenter;
// 背景样式
fullCustomStyle.normal.background = btnNormalBg;
fullCustomStyle.hover.background = btnHoverBg;
// 布局样式
fullCustomStyle.padding = new RectOffset(10, 10, 5, 5); // 内边距:左/右/上/下
fullCustomStyle.margin = new RectOffset(5, 5, 5, 5); // 外边距
}
void OnGUI()
{
GUI.Button(new Rect(50, 120, 180, 50), new GUIContent("完全自定义按钮"), fullCustomStyle);
}
}