REFramework配置系统全解析:从基础到进阶的个性化定制指南
基础概念:配置系统架构
REFramework的配置系统是实现个性化体验的核心组件,其核心代码位于[REFrameworkConfig.hpp](https://gitcode.com/GitHub_Trending/re/REFramework/blob/6e28fb1f9aa3b7a37f175999d396b5a2cd4cb3fa/src/mods/REFrameworkConfig.hpp?utm_source=gitcode_repo_files)和[REFrameworkConfig.cpp](https://gitcode.com/GitHub_Trending/re/REFramework/blob/6e28fb1f9aa3b7a37f175999d396b5a2cd4cb3fa/src/mods/REFrameworkConfig.cpp?utm_source=gitcode_repo_files)两个文件中。配置系统采用键值对存储结构,默认配置文件名为re2_fw_config.txt,负责记录用户的所有偏好设置。
配置系统的工作流程遵循三个关键步骤:
- 初始化:游戏启动时,
REFrameworkConfig::on_initialize()创建配置实例 - 加载:
on_config_load()从文件读取参数并应用到内存变量 - 保存:用户通过UI修改设置后,
on_config_save()将当前状态写回文件
💡 核心提示:配置系统采用模块化设计,所有选项通过ValueList统一管理,便于批量操作和扩展。
核心功能:配置参数详解
菜单控制与交互设置
REFramework提供了丰富的菜单控制选项,让用户可以根据习惯定制交互方式:
| 参数名 | 类型 | 默认值 | 应用场景 |
|---|---|---|---|
| MenuKey_V2 | 按键 | VK_INSERT | 定义打开/关闭主菜单的快捷键 |
| MenuOpen | 布尔值 | true | 控制游戏启动时菜单默认状态 |
| RememberMenuState | 布尔值 | false | 记忆上次游戏退出时的菜单状态 |
记忆菜单状态的实现逻辑:
// 仅当启用记忆功能时才应用保存的状态
if (m_remember_menu_state->value()) {
g_framework->set_draw_ui(m_menu_open->value(), false);
}
界面显示个性化
光标与字体设置
光标控制是提升操作体验的重要部分:
- DrawCursorWithMenuOpen:控制菜单打开时是否显示光标(RE8默认为true,其他游戏默认为false)
- ShowCursorKey:快速切换光标显示状态的快捷键
字体自定义则让界面更符合个人视觉偏好:
- FontSize:设置界面文字大小,默认值为16
- FontFile:指定字体文件,默认使用"DEFAULT"内置字体
字体加载的实现代码:
// 创建字体目录(如果不存在)
const auto fonts_path = REFramework::get_persistent_dir() / "reframework" / "fonts";
fs::create_directories(fonts_path);
// 扫描目录中的字体文件
for (const auto& entry : fs::directory_iterator(fonts_path)) {
if (fs::is_regular_file(entry)) {
const auto ext = entry.path().extension();
// 只加载otf和ttf格式的字体文件
if (ext == ".otf" || ext == ".ttf") {
fonts.push_back(entry.path().filename().string());
}
}
}
实践指南:配置界面操作
配置界面通过REFrameworkConfig::on_draw_ui()实现,按下默认快捷键Insert即可打开主菜单。界面采用树形结构组织,主要配置区域位于"Configuration"折叠项下:
// UI绘制逻辑
if (!ImGui::CollapsingHeader("Configuration")) { return; }
ImGui::TreePush("Configuration");
m_menu_key->draw("Menu Key"); // 菜单快捷键设置
m_show_cursor_key->draw("Show Cursor Key"); // 光标显示快捷键
m_remember_menu_state->draw("Remember Menu State"); // 记忆菜单状态
m_always_show_cursor->draw("Draw Cursor With Menu Open"); // 菜单打开时显示光标
if (m_font_file->draw("Font")) { // 字体选择下拉框
g_framework->set_font(m_font_file->value()); // 应用新字体
}
if (m_font_size->draw("Font Size")) { // 字体大小调节
g_framework->set_font_size(m_font_size->value()); // 应用新字体大小
}
ImGui::TreePop();
基本操作流程:
- 按下
Insert键打开REFramework主菜单 - 找到并展开"Configuration"选项卡
- 点击相应设置项进行修改
- 修改完成后设置会自动保存生效
进阶技巧:深度定制方案
自定义快捷键
除了通过UI界面,还可以直接修改配置文件来自定义快捷键。例如将菜单快捷键从Insert改为F5:
- 关闭游戏
- 用文本编辑器打开
re2_fw_config.txt - 找到或添加
MenuKey_V2=VK_F5 - 保存文件并重启游戏
如果需要在代码层面修改默认值(适用于mod开发者):
// 在REFrameworkConfig.hpp中修改默认值
ModKey::Ptr m_menu_key{ ModKey::create(generate_name("MenuKey_V2"), VK_F5) };
批量配置管理
配置系统的ValueList设计使得批量操作变得简单:
// 配置项列表定义
ValueList m_options {
*m_menu_key, // 菜单快捷键
*m_menu_open, // 菜单默认状态
*m_remember_menu_state,// 记忆菜单状态
*m_always_show_cursor, // 光标显示控制
*m_show_cursor_key, // 光标显示快捷键
*m_font_size, // 字体大小
};
// 批量加载配置示例
for (IModValue& option : m_options) {
option.config_load(cfg); // 遍历所有配置项并加载
}
这种设计不仅方便批量加载和保存,也为未来扩展新配置项提供了便利。
常见问题解决
配置文件损坏导致游戏崩溃
问题表现:修改配置后游戏无法启动或频繁崩溃
排查思路:
- 检查配置文件是否存在语法错误
- 确认是否有非法参数值(如非预期的按键码)
- 尝试删除配置文件让系统生成默认设置
解决方法:删除re2_fw_config.txt文件,REFramework会在下次启动时自动创建全新的默认配置文件。
自定义字体不生效
问题表现:选择自定义字体后界面无变化
排查步骤:
- 确认字体文件格式是否为.otf或.ttf
- 检查文件是否放置在正确目录:
reframework/fonts - 验证文件名是否包含特殊字符或空格
- 确认配置文件中FontFile参数与实际文件名一致
快捷键冲突
问题表现:设置的快捷键无响应或触发其他功能
解决方法:
- 选择不与游戏本身快捷键冲突的按键
- 使用组合键(如Ctrl+Alt+F5)减少冲突概率
- 在配置界面测试按键响应,确保正确识别
配置系统架构总结
REFramework的配置系统采用清晰的分层设计:
- 定义层:
[REFrameworkConfig.hpp](https://gitcode.com/GitHub_Trending/re/REFramework/blob/6e28fb1f9aa3b7a37f175999d396b5a2cd4cb3fa/src/mods/REFrameworkConfig.hpp?utm_source=gitcode_repo_files)声明配置项和数据结构 - 逻辑层:
[REFrameworkConfig.cpp](https://gitcode.com/GitHub_Trending/re/REFramework/blob/6e28fb1f9aa3b7a37f175999d396b5a2cd4cb3fa/src/mods/REFrameworkConfig.cpp?utm_source=gitcode_repo_files)实现配置加载、保存和UI交互 - 存储层:
re2_fw_config.txt文件存储用户设置
通过这套配置系统,无论是普通玩家还是mod开发者,都能轻松定制REFramework的各种行为,打造个性化的游戏体验。掌握配置系统不仅能提升日常使用体验,也是深入理解REFramework架构的重要一步。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0148- DDeepSeek-V4-ProDeepSeek-V4-Pro(总参数 1.6 万亿,激活 49B)面向复杂推理和高级编程任务,在代码竞赛、数学推理、Agent 工作流等场景表现优异,性能接近国际前沿闭源模型。Python00
GLM-5.1GLM-5.1是智谱迄今最智能的旗舰模型,也是目前全球最强的开源模型。GLM-5.1大大提高了代码能力,在完成长程任务方面提升尤为显著。和此前分钟级交互的模型不同,它能够在一次任务中独立、持续工作超过8小时,期间自主规划、执行、自我进化,最终交付完整的工程级成果。Jinja00
auto-devAutoDev 是一个 AI 驱动的辅助编程插件。AutoDev 支持一键生成测试、代码、提交信息等,还能够与您的需求管理系统(例如Jira、Trello、Github Issue 等)直接对接。 在IDE 中,您只需简单点击,AutoDev 会根据您的需求自动为您生成代码。Kotlin03
Intern-S2-PreviewIntern-S2-Preview,这是一款高效的350亿参数科学多模态基础模型。除了常规的参数与数据规模扩展外,Intern-S2-Preview探索了任务扩展:通过提升科学任务的难度、多样性与覆盖范围,进一步释放模型能力。Python00
skillhubopenJiuwen 生态的 Skill 托管与分发开源方案,支持自建与可选 ClawHub 兼容。Python0111
