UE3 的Config文件夹

工作中需要用到UE3,看官方文档中文版翻译有些偷懒和翻译不妥当,故看着英文自己翻译理解了一下,以供后续参考。

目录

基础内容

0.概述 

1.uc脚本中的类定义关联配置文件和保存

2.保存配置文件API

SaveConfig()

StaticSaveConfig()

3.ucc 编译的时候使用

4.配置文件类型

Default 配置文件 和 XXX 配置文件 

Base 配置文件 和 Default配置文件

5.配置文件中的特殊符号

进阶内容



基础内容

0.概述 

UE3的很多参数的配置都是在配置文件中。配置文件都存在于一个叫Config文件夹下面。配置文件的类型是ini文件,其中的组织结构是一个一个的section([section name]),每个section里面是一个一个的键值对(key=value),同一个键可以有多个值。

配置文件设置的内容一些用来初始化类中的变量,一些用来指示engine的一些工作——比如要unrealscript code compiler(ucc)要编译哪些脚本。

具体使用的地方可以在native code(C++)中使用,也可以在UnrealSript(.uc)中使用。

下面结合例子进行具体介绍。

1.uc脚本中的类定义关联配置文件和保存

随便找一个UDK自带的比如 GameInfo.uc文件

class GameInfo extends Info
    config(Game)

上述指示了 GameInfo类 依赖于 XXXGame.ini 配置文件中的某个section中的键值对来进行初始化一些变量。

 

那么某个section的section名应该是什么呢? 是:[Engine.GameInfo],规则是 [(package).(classname)]

那包名为什么是Engine呢?因为这个GameInfo.uc在Engine那个文件夹下(Src下一级的文件夹,uc所在的Classes的上一级)

(ps: 编译的时候把Src下的AAA下的Classes文件夹下的 .uc 文件 打包成 一个 AAA.uAAA就是文件夹名。AAA.u放在Script文件夹下)

XXXGame.ini 中的 XXX具体是什么呢 就是项目文件夹 
比如项目文件夹叫 UDKGame,XXX 就是UDK
比如项目文件夹叫 UTGame, XXX 就是UT

(猜测项目名称都要叫 XXXGame)

所以 通过 UnrealScript(.uc)使用的,配置文件中的section名命名规则一般遵循的是 [(package).(classname)]
    (ps, 也有例外,比如 [WinDrv.WindowsClient] section 并不是遵循上面规则, 具体先不深究了)
    (ps 通过native code中使用的话,一般section名字就是 一个简单的标题。DefaultEngnine.ini 中的 [URL])

2.保存配置文件API

配置文件在读取初始化值,在运行时保存修改配置文件,作为下一次的初始化。

运行时保存object的配置到配置文件中有两个api,下面分别介绍

SaveConfig()

其中TestConfig.uc定义如下:

class TestConfig extends Actor
   config(UDN);

var config int X;

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

 注意X变量的修饰符 为 config

当object实例调用 postbeginplay函数的时候,就会在 XXXUDN.ini中保存X,假设TestConfig.uc所在的包名是UDKGame:

[UDKGame.TestConfig]
X=5

下次初始化这个object实例的时候,就用配置文件中的值对X进行初始化。

(有点类似于unity中的prefab在inspector界面中设置了初始值?)

 

另外,子类可以继承父类的config变量,也可以重写为其他iniName。下面例子没有重写。

TestConfigChild.uc

class TestConfigChild extends TestConfig;

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

同样保存在XXXUDN.ini中的section名为:

[UDKGame.TestConfigChild]
X=15

 

 

StaticSaveConfig()

StaticSaveConfig() 不通过实例调用,直接用类名调用。

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

同样保存在XXXUDN.ini中的section名为:

[UDKGame.TestConfigChild]
X=30


3.ucc 编译的时候使用

前面说到配置文件中也有给ucc脚本编译器编辑用的。

一般在 XXXEngine.ini 的 [BBB.EditorEngine] section 中设置了会存在哪些包,需要去这个去加载这些个包。

所以在新加了一个需要编译的包含uc文件的文件夹的时候要在对应的 XXXEngine.ini 的这个section里加上类似键值对。


4.配置文件类型

 

可以分成  

     Base 配置文件(Engine文件夹下)    

     Default 配置文件 和 XXX 配置文件(项目名文件夹下,UDKGame)


Default 配置文件 和 XXX 配置文件

        当第一次运行游戏引擎的时候,一些 XXX 配置文件会缺失。这个时候,就会从 默认的配置文件中(Default打头的) 里面去转化为 XXX 打头的
        (比如在 UDKGame 工程中,会把 DefaultEditor.ini 转化为 UDKEditor.ini ),一旦创建以后就是用的 UDKEditor.ini(Editor类型的)
        默认的default 配置文件用于创建和恢复默认

 

Base 配置文件 和 Default配置文件

         有些 Default 配置文件是在是从 Engine 文件夹下面的 Base 配置文件中“继承”来的,可以看到default配置文件中都有 Configuration section 节的配置,里面的BasedOn字段就是指示了基于哪个配置文件。
        也就是说你要基于某个配置文件基于某个配置文件的时候需要在配置文件的最开头有 [Configuration]节,然后配置 BasedOn key-value对。
    

剔除Default Base 和 XXX 以后的配置文件类型(用于在uc文件中类定义的 config(配置文件类型)):

比如:
        Engine 用于 object 和 变量的初始化值
        Input    用于key bindings 绑定 Exec Commands等功能的键绑定

等自带的类型,也可以有自定义的比如前面例子中的 UDN。


5.配置文件中的特殊符号

在多个配置文件中组合中(上面所说的 Base 和 Default 的关系)会用到上述的符号,比如这个config 是基于那个config来的。

    + 增加一条属性 之前没有属性 
    - 删除一条属性(必须完全匹配)
    . 增加一条属性 可以是之前有的属性
    ! 删除一条属性(只需要属性名相同就可以)

6.其他 

1.ModEditPackages 和 EditPackages 的区别

https://forums.epicgames.com/udk/udk-development/udk-programming-and-unrealscript/228895-are-there-any-technical-differences-between-editpackages-and-modeditpackages

会先编译  EditPackages 的从上往下,然后再编译 ModEditPackages 的从上往下。


进阶内容

深入了解配置文件工作机制,博客中使用的ue4进行介绍,不妨碍理解原理。

只看了前面一部分,后续有空再细看,留着备忘。

https://blog.csdn.net/u012999985/article/details/52801264

虚幻3自学教程,图文虚幻3引擎(Unreal Engine 3)又称虚幻引擎3,是一套为DirectX 9/10 PC、Xbox 360、PlayStation 3平台准备的完整的游戏开发构架,提供大量的核心技术阵列,内容编辑工具,支持高端开发团队的基础项目建设。   虚幻3引擎的所有编写观念都是为了更加容易的内容制作和编程的开发,为了让所有的美术开发人员能够牵扯到最少程序开发内容的情况下使用抽象程序助手来自由创建虚拟环境,以及提供程序编写者高效率的模块和可扩展的开发构架用来创建,测试,和完成各种类型的游戏制作。  虚幻3引擎给人留下最深印象的就是其极端细腻的人物和物品模型。通常游戏的人物模型由几百至几千个多边形组成,并在模型上直接进行贴图和渲染等工作从而得到最终的画面。而虚幻3引擎的进步之处就在于在游戏的制作阶段,引擎可以支持制作人员创建一个数百万多边形组成的超精细模型(最上面的模型由200万多边形组成,而下面的模型仅有5287个多边形),并对模型进行细致的渲染,从而得到一张高品质的法线贴图,这张法线贴图中记录了高精度模型的所有光照信息和通道信息。在游戏最终运行的时候,游戏会自动将这张带有全部渲染信息的法线贴图应用到一个低多边形数量(通常在5000-15000多边形)的模型上。这样的效果就是游戏的模型虽然多边形数量比较少但是其渲染精度几乎和数百万多边形的模型一样,这样可以在保证效果的同时在最大程度上节省显卡的计算资源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ivy_0709

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值