尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
raylib+raygui:30行C代码搭出会动的游戏设置面板
raylibraygui30行C代码搭出会动的游戏设置面板【免费下载链接】raylibA simple and easy-to-use library to enjoy videogames programming项目地址: https://gitcode.com/GitHub_Trending/ra/raylib周五晚上你刚把游戏主循环跑通现在想加个设置菜单——音量、分辨率、暂停按钮。可一想到要引一个几百KB的UI框架、配置状态树和回调就犯怵。其实 raylib 自带的 raygui官方单头文件的即时模式控件库就能解决把 raygui.h 拖进项目30行代码里你就能拖出一个会响应鼠标的面板。这篇带你从零把滑块、按钮、复选框跑起来并附上三个能直接抄的场景。30秒跑通第一个 raygui 窗口先别管控件先把窗口和一行文字画出来。把仓库里examples/shapes/raygui.h拷进你的目录写这么短的 main#include raylib.h #define RAYGUI_IMPLEMENTATION #include raygui.h int main(void) { InitWindow(800, 450, raygui 冒烟测试); while (!WindowShouldClose()) { BeginDrawing(); ClearBackground(RAYWHITE); GuiLabel((Rectangle){30, 30, 300, 20}, hello raygui); EndDrawing(); } CloseWindow(); return 0; }编译运行窗口里左上角会有一行灰字。就这么几行raygui 已经接管了字体和绘制。它不需要你链接额外库头文件自己带实现这就是单头文件设计的省事之处。即时模式到底在做什么保留模式那套控件画完就存着、你维护一棵状态树、点哪个弹哪个回调一句话带过就行这里不展开了。raygui 反过来每一帧你在主循环里重新调用一遍GuiLabel、GuiSliderBar……它根据当前变量值把控件画出来同时检查鼠标落点值变了就帮你改指针。说白了界面是你每帧重述一遍的结果而不是一个存下来的对象。这个设计的代价是坐标得自己摆没有布局引擎好处是你的 C 变量就是界面状态没有隐藏的对象生命周期。调试时你打印那个float看到的正是用户此刻拖到的值。三个真实场景菜单、面板、原型下面三个场景对应三种项目游戏内的暂停菜单、跑数据的监控面板、验证想法的原型。代码都不长你照着改坐标和变量名就能用。场景一游戏暂停菜单暂停菜单的核心是几个按钮加一个开关。raygui 的GuiButton在点击那一帧返回非零你拿它当触发器就行int menu 0; // 0暂停, 1设置 bool fullscreen false; if (GuiButton((Rectangle){300, 100, 150, 40}, 继续游戏)) menu 0; if (GuiButton((Rectangle){300, 160, 150, 40}, 设置)) menu 1; GuiToggle((Rectangle){300, 220, 150, 40}, 全屏模式, fullscreen);跑起来三个控件竖排在中间点继续游戏或设置会让menu变GuiToggle每点一次翻转fullscreen。你会注意到GuiButton只在按下那一帧为真不是持续为真所以放主循环里不会被重复触发。场景二数据监控面板监控面板要的是一个旋钮调一个量。GuiSpinner适合整数步进比如切片数量GuiSliderBar适合连续浮点右边那串文字就是当前值的实时显示int slices 7; float innerR 0.3f; GuiSpinner((Rectangle){520, 80, 125, 25}, Slices , slices, 2, 8, false); GuiSliderBar((Rectangle){520, 120, 210, 20}, 内环, TextFormat(%.1f, innerR), innerR, 0, 0.8);仓库里的shapes_pie_chart示例就是这套右侧一列控件左半边画饼图你拖滑块切片和内环半径就实时变。你会注意到滑块右侧的TextFormat字符串每帧被重新算一遍所以你看到的数字永远跟变量同步不存在显示没刷新这种 bug。场景三原型快速验证调参数找手感时你要的是随手拉一下就看效果。这正是 raygui 最舒服的地方——把每个Draw*函数旁边挂一根滑块float roundness 0.15f; bool drawRounded true; GuiSliderBar((Rectangle){640, 40, 105, 20}, Width, TextFormat(%.2f, width), width, 0, 500); GuiSliderBar((Rectangle){640, 70, 105, 20}, Height, TextFormat(%.2f, height), height, 0, 400); GuiCheckBox((Rectangle){640, 320, 20, 20}, DrawRounded, drawRounded);shapes_rounded_rectangle_drawing就是这个套路右边一列滑块和复选框左边的矩形宽度、圆角跟着变。你会注意到坐标都是写死的绝对值没有布局系统——原型阶段这反而是好事你想让控件去哪就写到哪不用先学一套排版规则。踩过的坑三行修复滑块数值跳变、不跟手→ 原因GuiSliderBar收的是float *你传了int的地址类型不匹配导致读写错位 → 修复float level 0.0f;再传level。中文显示成方块或乱码→ 原因内置默认字体只覆盖 ASCII → 修复Font f LoadFontEx(fonts/you.ttf, 32, 0, 250); GuiSetFont(f);在InitWindow后调用一次。控件互相吃掉点击→ 原因两个Rectanglebounds 重叠raygui 按绘制顺序命中先画的盖住后画的 → 修复每行 y 递增、不重叠比如{panelX, 80, 180, 20}和{panelX, 120, 180, 20}之间留足间距。它不适合你吗raygui 是轻量级 C 界面方案强项是少量控件、跟图形一起画。它没有布局引擎、没有滚动容器、没有多窗口/多文档管理做复杂表单或多窗格 IDE 会很痛苦。那种需求就去用 Dear ImGui 或平台原生 UI 库别硬扛。你只是给游戏加点菜单、参数面板、调试 HUDraygui 正好。把examples/shapes/raygui.h拷进项目目录顶部#define RAYGUI_IMPLEMENTATION再#include用GuiSliderBar替换你现在那个int输入框值直接绑到变量上给主循环里每个GuiButton套if (...)别在循环外判断中文乱码就LoadFontExGuiSetFont一行搞定控件是每帧重述出来的变量就是界面剩下的交给鼠标。【免费下载链接】raylibA simple and easy-to-use library to enjoy videogames programming项目地址: https://gitcode.com/GitHub_Trending/ra/raylib创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

易助ERP数据字典实战:从表结构到报表开发与接口对接

易助ERP数据字典实战:从表结构到报表开发与接口对接

简介:鼎捷软件易助ERP系统的MSSQL数据字典文件包,面向ERP二次开发工程师、实施顾问及数据库管理员,用于解决开发过程中表结构不清晰、字段含义不明、表间关联难以追溯等问题。压缩包共收录529个文件,其中511个xml文件承载核心数据…

📅 2026/11/7 13:14:59
跨导与输出阻抗:统一推导放大器增益的核心方法

跨导与输出阻抗:统一推导放大器增益的核心方法

很多人在学模拟电路时会遇到同一个坎:电路拓扑能看懂,管子是共源还是共栅也能分清,但一算放大倍数就不知道从哪里下手。教材把共源、共漏、共栅、差分对、运放分章讲,每种电路单独记一个公式,结果题目稍微改一点&#…

📅 2026/10/6 16:03:03
模拟IC手算增益利器:跨导gm与输出阻抗ro的运用

模拟IC手算增益利器:跨导gm与输出阻抗ro的运用

在模拟集成电路的小信号分析里,利用跨导 (g_m) 和输出阻抗 (r_o) 直接求放大倍数,是一把很实用的大杀器。很多初学者拿到一个共源放大器,第一反应是把整个小信号等效电路画出来,再列节点电流方程、消元,最后整理出 (V_…

📅 2026/10/4 16:08:07
MORE NEWS

更多资讯

📰

鹤庆电工证哪里考的多 别踩坑!工地太忙根本没时间复习考试

鹤庆电工证哪里考的多 别踩坑!工地太忙根本没时间复习考试 工地太忙根本没时间复习考试,这话我听得太多了。作为一名在应急管理领域干了多年的“老手”,我太理解一线工人的难处。你可能天天在工地跑,连吃饭都得抢时间,哪还有精力去准备电工证考试?但…

📰

电工证办理 网上可查有效期多久

工地太忙根本没时间复习考试?电工证办理网上可查良心建议来了 工地太忙根本没时间复习考试?这几乎是每个在工地一线的电工都经历过的事情。尤其是在信阳浉河区这样的工程密集区域,项目进度紧、任务重,很多人连吃饭时间都被压缩,更别提抽空复习考试了。不…

📰

岳阳市电工证年审千万别踩坑,三门峡从业者亲测避雷指南

岳阳市电工证年审千万别踩坑,三门峡从业者亲测避雷指南 你是不是正在为岳阳市电工证年审发愁?不知道去哪报名、怕被中介坑、怕流程复杂?别急,这篇文章就是为你量身定制的避坑指南,从报名材料到年审流程,手把手带你走一遍,避免走弯路。…

📰

你别再交冤枉钱了!郑州报考避坑指南:数控维修电工证怎么一次过?

你别再交冤枉钱了!郑州报考避坑指南:数控维修电工证怎么一次过? 怕考不过白交培训费?你不是一个人!在郑州报考数控维修电工证的人里,70%以上都踩过坑。要么是培训费花了大几千,考试却挂了,要么是被“包过班”骗了钱,连个证书都没拿到。这期就给你…

📰

盘州电工证复训千万别踩坑,找工作前必须搞懂这些

盘州电工证复训千万别踩坑,找工作前必须搞懂这些 你还在为找不到电工工作发愁?特种作业证没考下来,连面试资格都没了! 千万别踩坑 ,现在就来搞清楚盘州电工证复训的那些事儿。 为什么电工证是刚需?…

📰

室内电工证通用么 内部消息告诉你转岗怎么走

室内电工证通用么 内部消息告诉你转岗怎么走 之前考的证在外省能不能转过来?这几乎是所有转岗、跨省打工的电工从业者最头疼的问题。最近有位新乡的朋友就跟我聊起这事,他之前在河南考的室内电工证,现在去了山东工作,发现证书在那边好像不被认可,心里直…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬