UDN
Search public documentation:

ConfigurationFilesCH
English Translation
日本語訳
한국어

Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

UE3 主页 > 虚幻引擎 3 基础知识 > 配置文件
UE3 主页 > 输入 / 输出 > 配置文件

配置文件


概述


虚幻引擎 3 依赖于配置文件来指示它将如何运作及初始化。配置是由成对的键值来决定的,他们咱找部分排列。一个键可以和一个或多个值相关联。

一些变量可以直接地通过 native 代码进行访问,而其它的变量可以很容地追溯到 UnrealScript 代码中。无论何时当在一个对象上调用 SaveConfig()StaticSaveConfig() 函数时,引擎把所有的变量保存到指定的配置文件中(除非已经定义类可以把它的设置保存到可替换的配置文件中)。

Native 代码所使用的配置文件中的变量一般有一个简单的部分标题。比如,出现在 DefaultEngnine.ini 配置文件的第一部分简单地命名为 [URL] 。然而,UnrealScript 代码使用的任何变量通常都有完全的符合要求的类名称,它遵循命名格式 [(package).(classname)] 。例如,DefaultEngine.ini 中的 [Engine.Engine] 项指向存储在 Engine 软件包内部的 Engine 类。对于这个规则而言有一些例外情况,例如 [WinDrv.WindowsClient] 项。

同时,请记住 UnrealScript 代码编辑器 (UCC) 使用配置文件来决定哪个包存在。和游戏引擎不一样的是,UCC 仅使用设置信息的一个较小的子集(主要是 DefaultEngine.ini 配置文件中的 [Editor.EditorEngine] 项)来加载包。

第一次运行引擎,可能会缺少某些配置文件。它将会加载默认的配置文件,然后把它们转化为使用当前项目名称的配置文件。比如,对于 UDKGame 项目来说,DefaultEditor.ini 会转换为 UDKEditor.ini。当生成真正的配置文件后,将不再使用默认的文件。然而,您将会发现默认文件作为参考或者允许终端用户将他们的配置文件重新设置为默认设置是非常有用的。

这些默认文件构成了引擎项目中的 Base 文件中的核心配置。这可以在默认配置文件的 [Configuration] 部分看到。

引擎配置文件用来作为项目和变量的默认值。用户输入配置可以用作为函数的按键绑定,比如可执行命令

使用配置文件


文件格式

部分和键-值对

一般的配置文件由成块的键-值对组成,如下所示:

[Section]
Key=Value

特殊字符

  • + - 如果该属性还不存在则添加一行(从前一个 .ini 文件或者同一个 .ini 文件的前面的部分)。
  • - - 删除一行(但是它必须是精确匹配)。
  • . - 添加一个新属性。
  • ! - 删除一个属性;但是不必是精确匹配,仅需要匹配属性的名称即可。

注意.+ 类似的,只是 . 可以添加一个重复的行。这对绑定是有用的(正如在 DefaultInput.ini 中所看到的),比如,其中最底部的绑定生效,所以如果您添加了类似于以下的东西:

[Engine.PlayerInput]
Bindings=(Name="Q",Command="Foo")
.Bindings=(Name="Q",Command="Bar")
.Bindings=(Name="Q",Command="Foo")

它将可以正确地工作。但是如果使用 + 则不能添加最后一行,且您的绑定将是错误的。由于配置文件绑定,将会发生上面的应用形式。

注释

大多数人似乎都会觉得配置文件中的分号表示注释,但它们不是。这种行为是故意设计的。从技术上讲,任何字符都可以代表任何一种不同的键值对。通常,会在新的一行的行首放置一个分号。它的功能像是注释,但事实上它不是。

; This is a Comment
; So is this!

创建配置文件

当创建一个基于另一个配置的新配置文件时,您需要包含 [Configuration] 项和 BasedOn 项的键值对。

比如,如果您的配置文件将要基于基础配置文件 Engine.ini ,您需要在您文件的顶部放置以下信息:

[Configuration]
BasedOn=..\Engine\Config\BaseEngine.ini

要想向从基础配置文件继承而来的特定部分的现有键值对添加添加附加信息,请使用 + 专用字符,如下所示:

[Core.System]
+Extensions=mymap

要想从基础配置文件继承而来的特定部分中删除一个的现有键值对,请使用 - 专用字符,如下所示:

[Core.System]
-Extensions=umap

如果您的配置文件没有基于任何东西,那么您将不需要指定 +-

保存对象配置

虚幻引擎 3 可以把一个对象的配置文件保存到任何所需的配置文件中。虚幻脚本/引擎配置文件的语法对于创建那个入口的对象来说是非常简单的也是很容易追踪的。

声明配置文件名称

类声明包含了新的配置文件的文件名。比如,以下实例类声明的变量将会保存到 'User' 配置文件中:

TestConfig.uc
class TestConfig extends Actor
   config(User);

var config int X;

function postbeginplay()
{
   X=5;
   SaveConfig();
}

在运行时生成 TestConfig 时,它将会设置 X 的值并保存它的配置信息。UDKUser.ini 文件(假设您的游戏是 UDKGame)将会更新以下信息:

[UDKGame.TestConfig]
X=5

下次在运行时生成 TestConfig 时,X 的默认值将会是 5。即使您要从 TestConfig 中删除 PostBeginPlay() 函数,X 的值将会设置为等于 5,前提是在配置文件中存在 5 这个值。

如果您声明了一个新的配置文件名称,那么创建这个文件,以您的项目名称为前缀(UDK 代表 UDKGame,Example 代表 ExampleGame)。下面的示例会显示一个可以声明新的配置文件并被保存在 UDKUDN.ini 中(对于 UDKGame)的对象:

class TestConfig extends Actor
   config(UDN);

变量配置和继承


配置变量会被其子类继承。但是,如果在 SaveConfig() 的子类上调用 TestConfig ,X 将会保存子类的值。以下的实例扩展了上面的 TestConfig 类:

TestConfigChild.uc
class TestConfigChild extends TestConfig;

function postbeginplay()
{
   X=15;
   SaveConfig();
}

在运行时生成 TestConfigChild 的时候,将这个对象的配置保存为:

[UDN.TestConfigChild]
X=15

动态 vs 静态配置

程序员可以使用两种不同的方法来把对象的配置信息保存到配置文件中: 动态和静态。基本上,这意味着如果您在对象实例上调用 SaveConfig() ,那么将会保存运行时变量。如果在一个类变量上调用 StaticSaveConfig() ,它会将对象的 默认 值写到配置文件中。上面的所有实例都是保存了运行时对象的配置信息。它将会允许您恢复最终用户配置,或者覆盖在配置文件的 Unrealscript 中定义的这个类的默认属性。

以下片段保存了 X 的默认值:

class'TestConfigChild'.default.X = 30;
class'TestConfigChild'.static.StaticSaveConfig();

X 的默认值被写入到了配置文件。

[UDN.TestConfigChild]
X=30

可用的配置文件


配置文件位于任何给定项目的 Config 目录中(例如,%UDK_ROOT%\UDKGame\Config)。

这里是使用虚幻引擎的特定游戏可用的配置文件列表:

  • DefaultCharInfo - 虚幻竞技场 3 使用的默认角色。
  • DefaultCompat - 在表格中的默认功能。
  • DefaultEditor - 虚幻编辑器的默认配置。
  • DefaultEditorKeybindings - 在虚幻编辑器中使用的默认按键绑定。
  • DefaultEditorUDK - 在虚幻编辑器中使用的默认 UDK 特定设置。
  • DefaultEditorUserSettings - 虚幻编辑器的默认用户设置。
  • DefaultEngine - 虚幻引擎 3 的默认配置。
  • DefaultEngineUDK - 在虚幻引擎 3 中使用的默认 UDK 特定设置。
  • DefaultGame - 在虚幻引擎 3 中用于游戏运行的默认游戏配置。
  • DefaultGameUDK - 在虚幻引擎 3 中用于游戏运行的默认 UDK 特定游戏设置。
  • DefaultInput - 在虚幻引擎 3 中可以用于游戏运行的默认按键绑定。
  • DefaultInputDefaults - 在使用 Coalesced.ini 的时候需要它才能重新设置默认值。
  • DefaultLightmass - 供 Lightmass 使用的默认 Lightmass 设置。
  • DefaultUI - 在虚幻引擎 3 中用于游戏运行的默认用户界面配置。
  • DefaultWeapon - 供虚幻竞技场 3 使用的默认武器设置。
  • DefaultWeaponDefaults - 在使用 Coalesced.ini 的时候需要它才能重新设置默认值。