UE3 的Config文件夹

2024-06-24 14:08
文章标签 文件夹 config ue3

本文主要是介绍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 Actorconfig(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

这篇关于UE3 的Config文件夹的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/1090366

相关文章

使用JavaConfig配置Spring的流程步骤

《使用JavaConfig配置Spring的流程步骤》JavaConfig是Spring框架提供的一种基于Java的配置方式,它通过使用@Configuration注解标记的类来替代传统的XML配置文... 目录一、什么是 JavaConfig?1. 核心注解2. 与 XML 配置的对比二、JavaConf

Python+PyQt5实现文件夹结构映射工具

《Python+PyQt5实现文件夹结构映射工具》在日常工作中,我们经常需要对文件夹结构进行复制和备份,本文将带来一款基于PyQt5开发的文件夹结构映射工具,感兴趣的小伙伴可以跟随小编一起学习一下... 目录概述功能亮点展示效果软件使用步骤代码解析1. 主窗口设计(FolderCopyApp)2. 拖拽路径

python如何下载网络文件到本地指定文件夹

《python如何下载网络文件到本地指定文件夹》这篇文章主要为大家详细介绍了python如何实现下载网络文件到本地指定文件夹,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下...  在python中下载文件到本地指定文件夹可以通过以下步骤实现,使用requests库处理HTTP请求,并结合o

一文教你Python引入其他文件夹下的.py文件

《一文教你Python引入其他文件夹下的.py文件》这篇文章主要为大家详细介绍了如何在Python中引入其他文件夹里的.py文件,并探讨几种常见的实现方式,有需要的小伙伴可以根据需求进行选择... 目录1. 使用sys.path动态添加路径2. 使用相对导入(适用于包结构)3. 使用pythonPATH环境

Qt把文件夹从A移动到B的实现示例

《Qt把文件夹从A移动到B的实现示例》本文主要介绍了Qt把文件夹从A移动到B的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录如何移动一个文件? 如何移动文件夹(包含里面的全部内容):如何删除文件夹:QT 文件复制,移动(

linux如何复制文件夹并重命名

《linux如何复制文件夹并重命名》在Linux系统中,复制文件夹并重命名可以通过使用“cp”和“mv”命令来实现,使用“cp-r”命令可以递归复制整个文件夹及其子文件夹和文件,而使用“mv”命令可以... 目录linux复制文件夹并重命名我们需要使用“cp”命令来复制文件夹我们还可以结合使用“mv”命令总

Python重命名文件并移动到对应文件夹

《Python重命名文件并移动到对应文件夹》在日常的文件管理和处理过程中,我们可能会遇到需要将文件整理到不同文件夹中的需求,下面我们就来看看如何使用Python实现重命名文件并移动到对应文件夹吧... 目录检查并删除空文件夹1. 基本需求2. 实现代码解析3. 代码解释4. 代码执行结果5. 总结方法补充在

解决jupyterLab打开后出现Config option `template_path`not recognized by `ExporterCollapsibleHeadings`问题

《解决jupyterLab打开后出现Configoption`template_path`notrecognizedby`ExporterCollapsibleHeadings`问题》在Ju... 目录jupyterLab打开后出现“templandroidate_path”相关问题这是 tensorflo

Python脚本实现自动删除C盘临时文件夹

《Python脚本实现自动删除C盘临时文件夹》在日常使用电脑的过程中,临时文件夹往往会积累大量的无用数据,占用宝贵的磁盘空间,下面我们就来看看Python如何通过脚本实现自动删除C盘临时文件夹吧... 目录一、准备工作二、python脚本编写三、脚本解析四、运行脚本五、案例演示六、注意事项七、总结在日常使用

mac中资源库在哪? macOS资源库文件夹详解

《mac中资源库在哪?macOS资源库文件夹详解》经常使用Mac电脑的用户会发现,找不到Mac电脑的资源库,我们怎么打开资源库并使用呢?下面我们就来看看macOS资源库文件夹详解... 在 MACOS 系统中,「资源库」文件夹是用来存放操作系统和 App 设置的核心位置。虽然平时我们很少直接跟它打交道,但了