ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

raygui 快速上手:15 行 C 代码调出游戏参数面板

raygui 快速上手:15 行 C 代码调出游戏参数面板 raygui 快速上手15 行 C 代码调出游戏参数面板【免费下载链接】raylibA simple and easy-to-use library to enjoy videogames programming项目地址: https://gitcode.com/GitHub_Trending/ra/raylib给游戏加个调试面板通常要写状态机、绑定回调、同步控件数据。raylib 的 raygui即时模式 GUI每帧重画一遍、不用手动同步状态走的是另一条路每帧循环里直接调用GuiSliderBar把变量指针递进去拖动的数值就写回你的变量。面板从想法到跑起来15 行代码。跑起来把 raygui.h 拷进你的工程目录写一个最小工程#define RAYGUI_IMPLEMENTATION #include raygui.h int main(void) { InitWindow(800, 450, raygui demo); float speed 1.0f; while (!WindowShouldClose()) { BeginDrawing(); ClearBackground(RAYWHITE); if (GuiSliderBar((Rectangle){50, 50, 300, 30}, Speed, NULL, speed, 0.1f, 5.0f)) printf(speed %.2f\n, speed); EndDrawing(); } CloseWindow(); return 0; }链接 raylib 后编译运行窗口里就有一条滑块拖动时speed实时变化GuiSliderBar在用户松手的那一帧返回 true方便你打日志或触发计算。编译产物大约多 100KB运行时内存占用不到 50KB。底层是怎么做的想象餐厅点单服务员每过一分钟来问一次还要加什么菜吗你每次口头回答后厨直接照做。即时模式 GUI 就是这个每分钟来问一次——while (!WindowShouldClose())循环里控件每帧被问一遍当前值是多少你的变量本身就是唯一的状态没有控件树、没有事件订阅。所以状态同步问题天然不存在变量是 3界面上就是 3。拿它解决实际问题让参数能实时调调阴影模糊半径这种改一次、重编译一次的痛用一个滑块就能消灭float blurRadius 2.5f; // 每帧调用bounds 是控件位置value 传指针min/max 限范围 GuiSliderBar((Rectangle){570, 90, 180, 20}, Blur, TextFormat(%.2f, blurRadius), blurRadius, 0.0f, 10.0f);渲染代码里直接用blurRadius拖一下立刻见效。仓库里 shapes_pie_chart.c 是完整范例每个扇区的数值都有独立滑块改完饼图立刻变形。把数据画成饼图展示性图表配上 raygui就是可调参的交互图表int slices 7; bool donut false; GuiSpinner((Rectangle){520, 60, 120, 25}, Slices, slices, 1, 10, false); GuiCheckBox((Rectangle){520, 100, 20, 20}, Donut, donut);GuiSpinner是带加减按钮的数值框GuiCheckBox管开关。扇区角度按values[i]/total * 360算绘制用DrawCircleSector循环一遍即可逻辑 20 行封顶。换风格只改一行raygui 的配色和圆角都走GuiSetStyle属性表不用自己画控件皮肤GuiSetStyle(DEFAULT, TEXT_COLOR, RGB(80, 80, 80)); GuiSetStyle(BUTTON, BORDER_COLOR, BLUE);两行代码全局风格统一改掉。你大概率会踩的坑坑 1窗口里什么控件都不显示现象编译通过窗口空白。原因忘了在raygui.h前定义RAYGUI_IMPLEMENTATION函数体没被编进来。修复#define RAYGUI_IMPLEMENTATION坑 2滑块值自己乱跳、不受范围约束现象拖到一半数值越界。原因minValue/maxValue传错或把float变量误传给GuiValueBox它只收int*。修复GuiSliderBar((Rectangle){50, 50, 300, 30}, Vol, NULL, vol, 0.0f, 1.0f);坑 3中文或特殊字符显示成方块现象标签乱码。原因默认字体只含 ASCII。修复加载带字符集的字体再挂上去GuiSetFont(LoadFontEx(fonts/cjk.ttf, 20, 0, 250));塞进你现有的项目拉取仓库git clone https://gitcode.com/GitHub_Trending/ra/raylib把 raygui.h 复制到你的源码目录各 example 目录下都有一份拷贝任选其一在你唯一的主 .c 文件顶部加#define RAYGUI_IMPLEMENTATION再#include raygui.h确认工程已链接 raylib无需额外依赖在BeginDrawing()后、EndDrawing()前插入控件调用编译运行下一步把面板挪进你正在写的游戏试试 core 系列示例 里core_custom_frame_control的帧循环改法再研究滚动面板GuiScrollPanel和风格表GuiLoadStyle的自定义主题。现在打开终端clone 下来试一遍。【免费下载链接】raylibA simple and easy-to-use library to enjoy videogames programming项目地址: https://gitcode.com/GitHub_Trending/ra/raylib创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表