UE3 的Config文件夹

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

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

相关文章

UE3脚本UnrealScript UC语法点滴

持续更新 目录 类定义修饰符  1.dependson(CLASSNAME) 2.config(ININAME) 3.native 4.notplaceable 5.inherits(CLASSNAME1[,CLASSNAME2,...]) 类对象实例创建 类默认属性设置 变量 1.声明 var local 2.修饰符 config  3.array 类型变量 以及

配置SpringCloud Config Client连上Config Server

SpringCloud Config Client实际上就是连接到Config Server的普通应用,前面一篇文章 SpringCloud Config Server搭建 已经介绍了如何搭建一个Config Server,本文介绍如何让一个Spring应用连上Config Server并使用Config Server上的配置信息。 创建一个Spring应用 不知道为什么,在https://s

SpringCloud Config Server搭建

文章目录 1 创建Git仓库2 创建应用配置文件3 将应用配置文件commit到Git仓库中4 创建Config Server应用5 配置运行Config Server6 访问Config Server SpringCloud Config Server的作用实际上是充当Spring应用和存放在Git中的配置文件之间的媒介,为其他应用提供一个统一的配置管理中心,架构图如下:

SpringCloud Config简介

简介 Spring Cloud Config为分布式系统的外部配置提供服务端(server)和客户端(client)的支持。Config服务端提供了一个集中的地方来管理所有环境下各个应用的配置,Config客户端即普通的Spring应用,但不局限于Spring应用,理论上任意应用都可以作为Config的客户端。Config服务端和客户端的概念都源自于Spring的Environment和Prop

批量压缩文件夹内文件并记录解压密码

主要功能是: 遍历指定目录中的所有文件。 为每个文件生成一个随机密码。 使用生成的密码将文件压缩为 7z 格式。 将文件名和对应的密码记录到 passwords.txt 文件中。 import osimport randomimport stringfrom py7zr import SevenZipFile, exceptions# 设置文件夹路径folder_path = r'D:

解决文件或文件夹无法删除问题

最近呢,发现很多小伙伴都会遇到一个问题,就是当我要删掉一个文件或者软件的时候,就会弹出[操作无法完成,因为其中的文件夹或文件已在另一个程序中打开] 然后我就翻看网站,很多都是什么去**[任务管理器]修改[资源管理器]**中的文件,虽然有时候可以解决问题,但是还有许多你无法找到或者就是浪费大量的时间去修改。 所以呢,我今天分享一款强大的免费的软件,名字叫[LockHunter] 使用方

Git config命令详解

使用场景 语法 git config [<file-option>] [--type=<type>] [--comment=<message>] [--fixed-value] [--show-origin] [--show-scope] [-z|--null] <name> [<value> [<value-pattern>]]git config [<file-option>] [--t

SpringCloud Alibaba微服务实战(四) - Nacos Config 配置中心

说在前面 Nacos 是阿里巴巴开源的一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。Nacos Config就是一个类似于SpringCloud Config的配置中心。 一.启动Nacos访问地址为:http://127.0.0.1:8848/nacos/,启动成功,如下图 基础环境配置,nacos安装请看文章:SpringCloud Alibaba微服务实战(一) -

轻松重命名Windows用户Users目录下的文件夹名称

设置系统还原点 为避免设置失败,需提前准备好系统还原点以备份恢复系统。 打开系统属性: 在“系统保护”选项卡中,选择你想要保护的系统驱动器(通常是C:驱动器)。 点击“配置”按钮。 在弹出的窗口中,选择“启用系统保护”,然后可以通过拖动滑块来调整系统还原点的最大使用量,一般建议预留5%~10%的磁盘空间。 点击“应用”和“确定”保存设置。 创建系统还原点: 在“系统保护”选项

【SpringCloud深入浅出系列】SpringCloud组件之集成Config实现本地配置中心

SpringCloud 组件之集成 Config 实现本地配置中心 一、项目说明二、实现本地配置中心1.创建配置文件2.添加配置3.启动测试 一、项目说明 之前已经在 SpringCloud 组件之集成Config实现分布式配置 文中实现了 Config 的分布式配置,通过读取 Gitee 远程仓库的方式获取配置信息,本文在该项目的基础上对代码进行修改,实现通过读取本地物理