UE4将变量config设置
在UE4中可以将变量的设置放进config文件中,可以在打包后直接修改配置文件的方式修改变量的初值。
例如:新建一个C++Actor类,在类的UCLASS中加入Config宏。
UCLASS(Config=MyActor)
class CONFIGPROJECT_API AMyActor : public AActor
{
GENERATED_BODY()
其中的Config=MyActor MyActor是与你自己想要创建的ini文件名相关。
然后再新建一个变量,
UPROPERTY(config, BlueprintReadWrite)
int32 TempA;
在UPROPERTY中加入config标签。接着在工程的Config目录下添加一个DefaultMyActor.ini文件。因为我在UCLASS中的Config填的是MyActor,所以起名为DefaultMyActor.ini。一定要加上Default
![在这里插入图片描述](https://img-blog.csdnimg.cn/e9f963189e8f4f4db9defba6fa741faf.png)
(当前工程名字是:ConfigProject)
然后再里面添加以下字段:
[/Script/ConfigProject.MyActor]
TempA=6
类似于一个键值对,/Script/ConfigProject.MyActor]的格式为/Script/工程名.Actor类名。
这样设置好后。在蓝图中生成MyActor的蓝图子类然后打印TempA就可以打印出配置文件的赋值了。
**![在这里插入图片描述](https://img-blog.csdnimg.cn/6182395f576742d28a28a62640f5394b.png)
注:
如果打包成Development版本后你的DefaultMyActor.ini会在打包后的Saved/Config文件夹中变成MyActor.ini,但是并不会影响,继续往里面设置值就好。
如果想动态获得Conifg的值,可以使用GConfig。
int32 res;
FString gameConfigPath = FPaths::ProjectDir() + "/DefaultMyActor.ini";
if (GConfig) {
GConfig->GetInt(TEXT("/Script/ConfigProject.MyActor"),
TEXT("TempA"),
res,
gameConfigPath);
}
这个Get函数的四个参数分别为:
![在这里插入图片描述](https://img-blog.csdnimg.cn/f0d019d33e434ace87fa807c934d03c2.png)
Section为键值对的方括号的内容,Key为你的变量名,也即是配置文件中的变量名。Value是你想要读取并赋值的变量,例如上面的代码会把读取的结果赋值给res变量,最后的Filename为你的配置文件的路径名。
需要注意的是一个是上文说的打包后文件名会自动去掉Default,还有就是有的博客会使用打包后的config文件,但是使用的函数是FPaths::ProjectConfigDir(),这个函数经测试打包后并不会返回正确的Config文件夹路径,返回的是项目名/Config,但是实际上打包后的config路径为
![在这里插入图片描述](https://img-blog.csdnimg.cn/cc9e66392e6e47bba64673f196befdec.png)
在敲代码的时候要特别留意。