中EN
概念页

配置文件系统

Configuration Files

更新于 2026-10-11 约 6 分钟UE5iniConfig项目设置

UE 的 .ini 配置按类别(Engine、Game、Input……)分层加载:从引擎 Base 文件到项目 Default 文件,再到平台文件和用户文件,后加载的同名键覆盖先加载的。数组可以用 +、-、! 等运算符跨层增删。UCLASS(config=X) 加上 UPROPERTY(Config) 可以让类的默认值从 ini 自动读取;命令行 -ini: 可以临时覆盖。

层级与覆盖

配置文件是按节 (section) 组织的键值对,在引擎启动时为所有构建和平台设置对象与属性的默认值。同一类别的文件形成层级,同名键时后加载的覆盖先加载的。Engine 目录下的文件对所有使用该引擎的项目生效,项目目录下的只对该项目生效,<PLATFORM> 目录下的只对该平台生效。(Configuration Files in Unreal Engine)

官方给出的类别加载顺序(以某一类别 <CATEGORY> 为例):

flowchart TD
  A["Engine/Config/Base.ini"] --> B["Engine/Config/Base类别.ini"]
  B --> C["引擎平台 Base 文件<br/>Base平台类别.ini"]
  C --> D["项目 Config/Default类别.ini"]
  D --> E["引擎平台文件 平台类别.ini"]
  E --> F["项目平台文件 平台类别.ini"]
  F --> G["用户文件 User类别.ini<br/>(本地应用数据、我的文档、项目)"]

上图从上到下依次加载,越往下优先级越高:项目 Default 文件覆盖引擎 Base 文件,平台文件再覆盖 Default 文件,最后是用户级文件。完整规则见引擎源码 ConfigHierarchy.h。(Configuration Files in Unreal Engine)官方建议尽量改项目目录下的配置,以便更精细地控制。

数组运算符

运算符含义例
!清空数组!MyArray=ClearArray
+值不存在时追加+MyArray=Value
-移除该值-MyArray=Value
.追加,允许重复.MyArray=Value

(Configuration Files in Unreal Engine)这样可以跨多层文件往同一个数组里添加条目,例如在 BaseEngine.ini 和项目的 DefaultEngine.ini 中分别追加。

自动读入类属性

节名写成 [/Script/ModuleName.ClassName](类名不带 U/A 前缀),类声明为 UCLASS(config=Game),属性标记 UPROPERTY(Config),然后在该类别层级中的任意文件(如 DefaultGame.ini)里赋值即可。(Configuration Files in Unreal Engine)这依赖 UObject 与反射系统 提供的属性元数据。复制驱动类(复制图)就是通过 DefaultEngine.ini 配置的例子。

调试与覆盖

  • 有控制台命令可以查看任意配置值,包括其他平台的配置。
  • 命令行 -ini:<CATEGORY>:[SECTION]:<KEY>=<VALUE> 可以临时覆盖配置,但不支持数组。(Configuration Files in Unreal Engine)

开发者设置 (Developer Settings)

UDeveloperSettings 是「所有自动发现的设置对象的基类」,位于 Runtime 模块 DeveloperSettings(头文件 Engine/DeveloperSettings.h),是一个抽象 UCLASS。派生类会被自动注册到设置界面,引擎自带的 UNetworkSettings、URendererSettings、UAssetManagerSettings、UGameFeaturesSubsystemSettings 等都继承自它。(UDeveloperSettings (API))

虚函数作用(官方说明)
GetContainerName()设置容器:Project(项目设置)或 Editor(编辑器偏好)
GetCategoryName()高层分类,如 Editor、Engine、Game
GetSectionName()唯一节名,默认用类的 FName
GetSectionText() / GetSectionDescription()显示名和描述,默认取类的 DisplayName 和 ToolTip
SupportsAutoRegistration()是否自动注册;返回 false 则自行注册
GetCustomSettingsWidget()自定义界面,仅限非常特殊的情况

OnSettingChanged() 委托可以监听属性修改。带 ConsoleVariable 元数据的属性可以用 ImportConsoleVariableValues / ExportValuesToConsoleVariables 与控制台变量同步;UDeveloperSettingsBackedByCVars 适用于部分或全部设置存放在控制台变量而非 config 变量的情况。不用自动注册时,可以调用 ISettingsModule::RegisterSettings(Container, Category, Section, ...) 手动注册(5.7 API)。(UDeveloperSettings (API))属性值本身仍然通过上文的 UCLASS(config=...) + UPROPERTY(Config) 机制从 ini 读写(这是归纳)。

  1. Configuration Files in Unreal Engine UE 5.8 文档
  2. UDeveloperSettings (API) UE 5.8 API 参考

相关页面

游戏开发 · UE5模块、插件与构建系统Modules, Plugins & Build SystemUE 的代码由模块 (Module) 组成:每个模块是一个独立编译单元,用 [模块名].Build.cs 声明依赖。插件 (Plugin) 是可按项目启用/禁用的代码与内容集合,用 .uplugin 描述,可包含多个模块。虚幻构建工具 (UnrealBuildTool, UBT) 根据 .Target.cs 和 .Build.cs(而不是 IDE 的 .sln)编译,默认把模块编成 DLL 由一个可执行文件加载,也可整体链接成单体 (Monolithic) 可执行文件。游戏开发 · UE5UObject 与反射系统UObject & Reflection System虚幻引擎 (Unreal Engine) 的对象基类是 UObject。在 C++ 类、属性、函数上加 UCLASS/UPROPERTY/UFUNCTION 等宏,再由构建前的预处理工具虚幻头文件工具 (Unreal Header Tool, UHT) 扫描头文件生成代码,引擎就能在运行时“看见”这些类型——这就是反射系统 (Reflection System)。垃圾回收、序列化、编辑器面板、蓝图、网络复制都建立在它之上。游戏开发 · UE5烘焙、打包与 Zen 加载器Cooking, Packaging & Zen Loader打包是一组构建操作:编译 (Build) → 烘焙 (Cook,把资产转成目标平台格式) → 暂存 (Stage) → 打包 (Package) → 可选的部署 (Deploy)。UE5 的运行时加载器 Zen Loader 会在暂存阶段离线算好包与对象的依赖图,并把数据装进 .utoc/.ucas 容器(IoStore),由 I/O 分发器以很低的 CPU 开销定位数据块;.pak 只用于不常访问的零散文件。游戏开发 · UE5复制图Replication Graph复制图 (Replication Graph) 插件解决的是服务器 CPU 瓶颈:标准做法是让每个复制 Actor 对每个连接各自判断是否需要发送,玩家和 Actor 一多(Fortnite 大逃杀开局有 100 名玩家、约 5 万个复制 Actor)就撑不住。复制图由持久存在的节点组成,按空间网格、休眠、常驻相关等规则预先分组,并缓存可跨帧、跨连接共享的复制列表。游戏开发 · UE5容器与字符串Containers & StringsUE 不用 STL,而用自带的值类型容器:TArray(连续数组)、TMap/TMultiMap(哈希映射)和 TSet(哈希集合),都假定元素可按字节直接搬移。字符串分三种:FName 存索引、比较便宜,FText 用于可本地化的界面文本,FString 可以修改但开销最大。选错类型的代价主要是性能和本地化。游戏开发 · UE5音频系统与 MetaSoundsAudio System & MetaSoundsUE5 的音频资产分三层:音源 (Sound Source) 负责产生声音,UE5 主推 MetaSounds,它是一张由设计师搭建的数字信号处理 (DSP) 图,能精确到单个采样;分组与混音用 Sound Class 和 Sound Class Mix 批量调整音量和音高;空间与资源由 Sound Attenuation(随距离衰减和空间化)和 Sound Concurrency(限制同时播放数量)控制。需要和节拍对齐的玩法可以用 Quartz 做精确到采样的调度。游戏开发 · UE5本地化LocalizationUE 的本地化以 FText 类型为中心,国际化(数字、日期、复数规则、文化回退)依赖 ICU 库。可本地化的文本由命名空间、键、源字符串三部分标识;本地化管线按目标 (Localization Target) 依次收集 (Gather) 到 manifest、翻译进各文化的 archive(通常经 PO 文件导出导入)、编译成运行时加载的 .locres。Localization Dashboard 是管理这条管线的推荐工具。游戏开发引擎配置系统Engine Configuration游戏引擎总会积累大量可配置选项:有的通过选项菜单暴露给玩家(画质、音量、手柄设置),有的只供开发团队使用、发售前隐藏或去除(如玩家最大行走速度在开发期可调、发售前改成硬编码)。GEA 讨论选项的存取方式(文本文件、压缩二进制、注册表、命令行、环境变量、在线档案)、全局与每用户选项,以及 Quake cvar、OGRE、Naughty Dog 三个真实例子。

输入关键词开始搜索

滚轮或双指缩放 · 拖动平移 · 双击放大 / 还原