news 2026/8/21 7:26:31

Unity学习笔记(十九)GUI控件(三)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Unity学习笔记(十九)GUI控件(三)

窗口

普通窗口

private Rect dragWindow = new Rect(400, 400, 200, 150);

第一个参数 id是窗口的唯一ID,不要和别的窗口重复

委托参数 是用于绘制窗口的函数 传入即可

GUI.Window(1, new Rect(100, 100, 200, 150),DrawWindow,"测试窗口");

id 除了区分不同窗口 还可以在一个函数中处理多个窗口的逻辑

通过id区分他们

GUI.Window(2, new Rect(100, 350, 200, 150),DrawWindow,"测试窗口");

模态窗口


可以让该其他控件不在有用 只要该窗口存在,其他控件的按钮就点击不了

.只能点击该窗口上的控件,你可以理解为该窗口在最上层,其他按钮都点击不到了
只能在窗口上点击控件 做警告窗口

GUI.ModalWindow(3, new Rect(300, 350, 200, 150), DrawWindow, "模态窗口");

拖动窗口

位置赋值是前提 ,还需要调用api GUI.DrawWindow

dragWindow = GUI.Window(4, dragWindow, DrawWindow, "拖动窗口");

GUI.DrawWindow 该api写在函数窗口中调用 ,可以让窗口被拖动
传入rect参数的重载作用
是决定窗口中哪一部分位置 可以被拖动

默认不填 就是无参重载,所有位置都能被拖动
不管是模态窗口还是窗口都可以 调用该方法拖动

private void DrawWindow(int id) { switch (id) { case 1: GUI.Button(new Rect(0, 50, 30, 20), "1"); break; case 2: GUI.Button(new Rect(0, 50, 30, 20), "2"); break; case 3: GUI.Button(new Rect(0,50, 30, 20), "3"); break; case 4: GUI.DragWindow(); break; } }

自定义皮肤样式

全局颜色

全局的颜色 影响 背景和文字

GUI.color = Color.blue;

文本着色颜色

会和全局颜色相乘

GUI.contentColor = Color.white;

背景元素着色颜色

会和全局颜色相乘

GUI.backgroundColor = Color.black;

整体皮肤样式

不设置就是默认的
如果使用GUIStyle ,那么就是GUIStyle的

GUI.skin = null;

GUI自动布局

GUILayout.BeginHorizontal(); GUILayout.Button("1"); GUILayout.Button("2"); GUILayout.Button("3"); GUILayout.EndHorizontal(); GUILayout.BeginArea(new Rect(300,300,300,300)); GUILayout.EndArea();

GUILayout布局选项

控件的固定宽高

GUILayout.Width(300); GUILayout.Height(200);

控件的最小,最大高度

GUILayout.MinHeight(200); GUILayout.MaxHeight(200);

控件的宽度和高度拓展的禁止和允许

GUILayout.ExpandHeight(true); GUILayout.ExpandHeight(false);

tip [ExecuteAwalys]加入标识,可以在编译完成后就能自动运行

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/21 16:41:41

断电重启,配置如初:16位高精度采集模块,免除重复设置烦恼

16位AD模拟量采集模块,其核心功能是将输入的连续模拟信号(如电压、电流)转换为16位精度的数字信号。一、采集性能:中高精度的实用化平衡 分辨率与精度适配:16 位 AD 芯片提供 65536 级量化精度,采集误差通常控制在 0.1% FS~0.2% F…

作者头像 李华
网站建设 2026/8/19 23:34:18

26、线程与文件管理:基础与高级操作

线程与文件管理:基础与高级操作 在计算机编程中,线程操作和文件管理是非常重要的两个方面。下面我们将详细介绍线程取款操作以及文件和目录管理的相关知识。 线程取款操作 在多线程环境中,对共享资源的操作需要进行同步控制,以避免数据竞争和不一致的问题。下面是一个取…

作者头像 李华
网站建设 2026/8/21 13:26:04

29、Unix 文件操作与管理全解析

Unix 文件操作与管理全解析 1. 文件删除与移动操作 1.1 文件删除 在 Unix 系统中, remove() 函数用于从文件系统中删除指定路径的文件或目录。其函数原型如下: #include <stdio.h> int remove (const char *path);若操作成功, remove() 会从文件系统中删除 …

作者头像 李华
网站建设 2026/8/21 4:34:04

30、深入理解 inotify 与内存管理

深入理解 inotify 与内存管理 1. inotify 简介与基本操作 inotify 是 Linux 系统中用于监控文件系统事件的机制。我们可以向一个已有的 inotify 实例添加新的监控项。示例代码如下: int wd; wd = inotify_add_watch (fd, "/etc", IN_ACCESS | IN_MODIFY); if (w…

作者头像 李华
网站建设 2026/8/21 7:38:33

32、深入理解内存管理:从严格别名到高级调试

深入理解内存管理:从严格别名到高级调试 1. 严格别名规则 在C和C++编程中,类型转换可能会违反严格别名规则,这是一个常被误解的概念。严格别名规则要求对象只能通过以下几种方式访问: - 对象的实际类型。 - 实际类型的限定版本(如 const 或 volatile )。 - 实际…

作者头像 李华
网站建设 2026/8/21 11:21:29

数美CTO梁堃:从人机对抗到智能进化,AI风控的下半场

本文转自《甲子光年》&#xff0c;作者王艺多2015 年&#xff0c;当移动互联网的流量红利见顶&#xff0c;黑灰产还停留在利用“按键精灵”和“群控设备”进行粗糙薅羊毛的阶段。十年过去&#xff0c;当我们站在 2025 年的门槛上回望&#xff0c;会发现那只是风控历史上的冷兵器…

作者头像 李华