当前位置: 首页 > news >正文

ImGui Learn Data Day 1

ImGui Learn data Day 1

image

        ImGui::Begin("Hello Gui");static float u = 0;static bool an = 0;if (ImGui::CollapsingHeader("Settings"))//展开条{//如果点击就展开或者关闭ImGui::SliderFloat("滑块", &u, 0.0, 10.0);ImGui::Checkbox("按钮", &an);}//下拉菜单const char* items[] = { "op1","op2","op3" };static int select = 0;//记录当前选的是哪个if (ImGui::Combo("choose one", &select, items, IM_ARRAYSIZE(items)));//最后一个是计算数组大小的	{ImGui::Text("check then open");}ImGui::SameLine();//上面的和下面的保持在同一行ImGui::BeginGroup();//用于把组件分个组 当需要对齐的时候可以一起对齐ImGui::Text("check then open1");ImGui::Text("check then open2");ImGui::Text("check then open3");ImGui::Button("ppp");//拖动组件static float va = 0.0f;ImGui::DragFloat("Drag me", &va, 0.001f, 0.0f, 10.0f);//第三个是步长//颜色选择器ImGui::ColorEdit3("color picker ", color);ImGui::EndGroup();//给组件分个组,begin和end中间的会被放到一起ImGui::End();
方法 注释
CollapsingHeader() 这是一个展开条,点击可以展开里面的组件,放在if的括号里面
Combo() 和展开条类似,只是展开之后可以选择东西,也是放在if里面,需要一个char*数组记录里面有什么可选的
SameLine() 这个组件的前一个组件和后一个组件放在同一行
DragFloat() 没有滑块的滑条,可以和滑块类似,拖动组件
ColorEdit3() 三个参数的颜色选择器,rgb,可以拿来选择各种颜色
BeginGroup()
EndGroup()
给组件分组的时候用,这两个中间的组件被视作为一组

实践作业:

作业要求:创建一个“游戏设置面板”

你需要创建一个界面,模拟一个游戏中的设置面板,可以让用户调整游戏参数。这个面板将包含以下几个部分:


1. 游戏基本设置

  • 音量控制:使用滑条(SliderFloat)来控制音量。
  • 画面亮度:使用滑条(SliderFloat)来控制画面亮度。
  • 是否开启背景音乐:使用复选框(Checkbox)来决定是否开启背景音乐。

2. 游戏控制设置

  • 鼠标灵敏度:使用浮动滑条(SliderFloat)来调整鼠标灵敏度。
  • 键盘布局选择:使用下拉菜单(Combo)让用户选择键盘布局(例如:QWERTYAZERTYDVORAK)。
  • 控制模式切换:使用一个按钮(Button)来切换控制模式(例如从“标准模式”切换到“飞行模式”)。

3. 显示设置

  • 分辨率选择:提供几个不同的分辨率选项,使用下拉菜单(Combo)进行选择。
  • 全屏模式:使用复选框(Checkbox)来选择是否启用全屏。

4. 保存设置

  • 使用一个按钮(Button)来保存用户的设置。点击后弹出一个消息框,显示用户设置的内容。

额外要求

  • 界面布局:确保各个设置项有良好的布局,适当使用 CollapsingHeaderBeginGroup/EndGroup 来组织内容。
  • 数据持久化:你可以使用静态变量(如 static)来保存用户设置,这样在不同的帧之间可以保持这些设置。

实现思路

  1. 创建窗口:你需要一个主窗口来承载这些设置。
  2. 音量与亮度:使用滑条来控制数值,并显示在文本中。
  3. 复选框:控制音乐是否开启,背景是否为全屏。
  4. 下拉菜单:让用户选择键盘布局和分辨率。
  5. 保存设置:点击按钮时弹出消息框,展示保存的设置。

代码结构大致框架

ImGui::Begin("Game Settings Panel");// 1. 游戏基本设置
if (ImGui::CollapsingHeader("Basic Settings"))
{static float volume = 0.5f;ImGui::SliderFloat("Volume", &volume, 0.0f, 1.0f);static float brightness = 1.0f;ImGui::SliderFloat("Brightness", &brightness, 0.0f, 2.0f);static bool musicEnabled = true;ImGui::Checkbox("Enable Background Music", &musicEnabled);
}// 2. 游戏控制设置
if (ImGui::CollapsingHeader("Control Settings"))
{static float mouseSensitivity = 1.0f;ImGui::SliderFloat("Mouse Sensitivity", &mouseSensitivity, 0.1f, 10.0f);const char* layouts[] = { "QWERTY", "AZERTY", "DVORAK" };static int selectedLayout = 0;ImGui::Combo("Keyboard Layout", &selectedLayout, layouts, IM_ARRAYSIZE(layouts));static bool flightMode = false;if (ImGui::Button(flightMode ? "Switch to Standard Mode" : "Switch to Flight Mode")){flightMode = !flightMode;}
}// 3. 显示设置
if (ImGui::CollapsingHeader("Display Settings"))
{const char* resolutions[] = { "1920x1080", "1280x720", "800x600" };static int selectedResolution = 0;ImGui::Combo("Resolution", &selectedResolution, resolutions, IM_ARRAYSIZE(resolutions));static bool fullscreen = false;ImGui::Checkbox("Fullscreen", &fullscreen);
}// 4. 保存设置
if (ImGui::Button("Save Settings"))
{// 这里可以模拟保存设置,并弹出一个消息框ImGui::OpenPopup("Settings Saved");
}if (ImGui::BeginPopupModal("Settings Saved", NULL, ImGuiWindowFlags_AlwaysAutoResize))
{ImGui::Text("Settings have been saved:");ImGui::Text("Volume: %.2f", volume);ImGui::Text("Brightness: %.2f", brightness);ImGui::Text("Music: %s", musicEnabled ? "Enabled" : "Disabled");ImGui::Text("Mouse Sensitivity: %.2f", mouseSensitivity);ImGui::Text("Keyboard Layout: %s", layouts[selectedLayout]);ImGui::Text("Mode: %s", flightMode ? "Flight Mode" : "Standard Mode");ImGui::Text("Resolution: %s", resolutions[selectedResolution]);ImGui::Text("Fullscreen: %s", fullscreen ? "Enabled" : "Disabled");if (ImGui::Button("Close"))ImGui::CloseCurrentPopup();ImGui::EndPopup();
}ImGui::End();

任务要求:

  1. 实现并完善上面的框架,确保每个功能都能正确工作。
  2. 提交时,提供:
    • 完整的代码
    • 截图或视频,展示界面效果

这个任务将帮助你巩固所学的 ImGui 技能,并加深你对界面布局、交互以及控件的使用掌握。完成后,你会更自信地使用 ImGui 来制作更加复杂和实用的用户界面。如果你在完成过程中遇到问题,随时可以向我询问!

http://icebutterfly214.com/news/61387/

相关文章:

  • 北京口碑比较好的留学中介
  • 北京出国留学的机构哪个好
  • Upgrade Your Universal Audi-Style 3-Button Smart Key with KEYDIY MLB08 434MHz Non-OEM PCB
  • 学习率调度算法的演进与优化
  • CF1851G-Vlad and the Mountains
  • Paddle-CLS图像分类_环境安装
  • 实验3 类和对象_基础编程 - yuyue
  • 2025-05-27-Tue-T-JVM
  • 11-11
  • 苹果app开发上架流程
  • P13536 [IOI 2025] 神话三峰(triples)(Part 1)
  • [清华集训 2014] Sum
  • 2025-11-23
  • 2025-09-10-Wed-T-Milvus
  • 2025.11.23
  • java linux环境变量
  • 贪心做题记录-2
  • 截图工具
  • linux 下定义常用路径环境变量
  • 2025年11月广东青少年素质拓展训练学校五大推荐口碑榜:规范养习惯,护航成长之路
  • 大盘风险控制策略分析报告 - 2025年11月21日
  • AI赋予NPC记忆能力的双重影响
  • 2025西北地区地埋式污水处理设备厂家最新top5推荐,宁夏、新疆、甘肃、陕西四省,污水处理设备品牌选型指南
  • 实用指南:各种各样的Self-attention学习上(第二十周周报)
  • the success of Japan
  • 人工智能之数据分析 numpy:第九章 数组运算
  • 20232411 2024-2025-1 《网络与系统攻防技术》实验六实验报告
  • 2025/11/23
  • # 二分图最大匹配
  • 1088. Rational Arithmetic (20)