01. 编辑器外观

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);
    }
}
相关推荐
丁小未15 小时前
基于MVVM框架的XUUI HelloWorld 新手教程
unity·性能优化·c#·游戏引擎
丁小未16 小时前
基于MVVM框架的XUUI MoreComplex案例
unity·c#
EQ-雪梨蛋花汤17 小时前
【Unity笔记】VR 一体机画面锯齿、模型边缘闪烁、接缝抖动排查:MSAA、Mipmap、Render Scale、Z-Fighting 全流程记录
笔记·unity·vr
YigAin21 小时前
Unity Spine 资源出现白边的解决办法
unity·游戏引擎·spine
郝学胜-神的一滴2 天前
中级OpenGL教程 013:渲染器类架构设计与逐帧渲染流程详解
开发语言·c++·unity·游戏引擎·图形渲染·opengl·unreal
真鬼1233 天前
【Unity WebGL】内嵌网页与双向通信
unity·游戏引擎·webgl
zyh______4 天前
C#语法糖(按照实用性排序)
unity·c#
avi91114 天前
[AI教做人]CinemachineCamera 各项调整配置参数入门 + Profiler
unity·游戏开发·camera·cinemachine·visual camera·镜头配置
郝学胜-神的一滴5 天前
[简化版 GAMES 101] 计算机图形学 16:纹理走样、Mipmap、三线性插值、各向异性过滤原理全解
unity·游戏引擎·godot·图形渲染·three.js·opengl·unreal
吴梓穆6 天前
untiy TextMeshPro (TMP) text 操作 中文字符集 字体材质操作(添加纹理 添加描边 添加阴影)
unity