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

相关文章

如何将文件夹里的PHP代码放到一个文件里

find ./dir -name "*.php" -exec 'cat' {} \; > dir.out

Linux 删除 当前下的 mysql-8.0.31 空文件夹

在Linux中,如果你想要删除当前目录下的名为mysql-8.0.31的空文件夹(即该文件夹内没有任何文件或子文件夹),你可以使用rmdir命令。但是,如果mysql-8.0.31文件夹并非完全为空(即它包含文件或子文件夹),rmdir命令会失败。 如果你的目标是删除mysql-8.0.31文件夹及其内部的所有内容(无论是否为空),你应该使用rm命令结合-r(或-R,它们是等价的)选项来递归地删

Nacos Config 配置中心支持配置共享

文章目录 一、什么是配置中心二、Nacos Config2.1 Nacos Config 工作原理 (★)2.2 Nacos Config 的使用2.3 动态刷新2.4 配置共享2.4.1 同一个微服务的不同环境之间共享配置2.4.2 不同微服务中间共享配置 一、什么是配置中心 微服务架构下关于配置文件的存在以下问题: 配置文件相对分散。在一个微服务架构下,配置文件会随

node快速复制文件或文件夹,排除部分文件(node_modules)

const fs = require('fs')const path = require('path')/*** @description: 获取完整的文件路径* @param {*} url 路径* @return {*} 返回完整的文件路径*/const getPath = (url) => {return path.join(__dirname, url)}/*** @descr

Eclipse发布Maven项目到tomcat,无法加载到lib文件夹下的jar包

BMS 解决方法: 当我们发布web项目到tomcat时,访问地址时会报一个classnotfound的错误,但是eclipse中的项目中都已经添加了相应的类,有一种比较容易犯的错误是,你没有把额外所需的jar包加到tomcat中的lib文件夹中,在这里介绍一种在项目中直接添加jar包到lib目录下:  右键已创建的web项目——properties属性——点击Deployment Assem

Vue组件文件夹结构建议

全局通用组件 位于src/components。 注意与业务组件区分,全局通用组件更强调基础性。类似于一个UI框架里的各种Input、Button、Tab,只是在此处是你自己封装的。 建议风格 文件夹命名使用PascalBase风格一个文件夹代表一个组件组件使用index.vue导出 示例 目录结构 - src- components- SvgIcon- index.vue 使用

虚拟机ubuntu与主机共享文件夹

现在主机(windows)上新建一个共享文件夹 打开虚拟机 按下面操作打开共享文件夹   进入虚拟机的系统    cd /mnt/hgfs 如果报错 可以按下面的解决   挂载一下  sudo mount -t fuse.vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other 如果显示不存在这个文件夹  我们可以去自己创建一个 cd /mnt

IDEA git提交时如何忽略某个文件或文件夹

首先打开file——>settings——>Editor——>File Types

proe5.0 config.pro 选项清理垃圾关系

proe5.0 config.pro 选项:  cleanup_drawing_dependencies YES_CS_NOT_REQUIRED c leanup_layout_dependencies YES_CS_NOT_REQUIRED 可以清理所有不应该存在的依赖关系 在某些情况下,图纸、布局和模型可能包含对模型的不需要的默认、幽灵、无效、旧的或遗留引用或者垃圾引用,如何删除这些引用?

【python txt合并】python合并同一个文件夹下所有txt文件

一、需求分析 合并一个文件夹下所有txt文件 二、合并效果 三、python实现代码 # -*- coding:utf-8*-import sysreload(sys)sys.setdefaultencoding('utf-8')import osimport os.pathimport timetime1=time.time()##############