UE 自定义Config文件存储位置及文件名

UE 自定义Config文件存储位置及文件名

  • 1 新建一个C++类
  • 2 定义需要存储的成员变量
  • 3 设置自定义配置文件路径
  • 4 将变量存储到文件中
  • 5 修改config文件中的值来修改变量的值
  • 6 验证结果
    • 6.1 存储config文件
    • 6.2 读取config文件
  • 7 代码总结

1 新建一个C++类

这个类需要继承自UObject,显然也可以继承UObject的子类。其次要使用UCLASS宏添加config = Game说明符,本文为了使用蓝图调试,同是也加上Blueprintable说明符。如下图所示:

UCLASS(Blueprintable, config = Game)
class UECESIUMEX_TAIWAN_API UDTIS_ConfigFile : public UObject
{
	GENERATED_BODY()
}

2 定义需要存储的成员变量

同样的需要存储的变量也要在UPROPERTY宏中加上Config说明符。如下图所示:

public:
	UPROPERTY(BlueprintReadWrite, Config)
	float ExampleVariable;

3 设置自定义配置文件路径

在类中声明一个成员变量,用于存储路径。

private:
	FString ConfigPath;
UDTIS_ConfigFile::UDTIS_ConfigFile()
{
	// 自定义配置文件目录
	ConfigPath = FPaths::ProjectDir() / TEXT("Settings/Custom.ini");
}

ProjectDir()函数返回的路径是.uproject文件那一级目录,Settings是自定义文件夹名字,Custom.ini是自定义config文件名

4 将变量存储到文件中

自定义一个函数SaveCustomConfig,函数实现如下图所示:

void UDTIS_ConfigFile::SaveCustomConfig()
{
	SaveConfig(CPF_Config, *ConfigPath);
	GConfig->Flush(false, ConfigPath);
	UE_LOG(LogTemp, Warning, TEXT("SaveCustomConfig"));
}

5 修改config文件中的值来修改变量的值

自定义一个函数LoadCustomConfig,将配置文件中的值设置给变量,函数实现如下图所示:

void UDTIS_ConfigFile::LoadCustomConfig()
{
	GConfig->Flush(true, ConfigPath);
	ReloadConfig(this->GetClass(), *ConfigPath);
	UE_LOG(LogTemp, Warning, TEXT("LoadCustomConfig"));
}

6 验证结果

6.1 存储config文件

在关卡蓝图中,使用Construct Object From Class函数实例化DTIS_ConfigFile对象(在UCLASS宏中加上Blueprintable说明符才能被蓝图使用,不然编译会报错),将ExampleVariable值修改为100,然后调用SaveCustomConfig进行测试。最后打开Custom.ini文件,文件中变量的值为100.

UE 自定义Config文件存储位置及文件名_第1张图片


UE 自定义Config文件存储位置及文件名_第2张图片


UE 自定义Config文件存储位置及文件名_第3张图片

6.2 读取config文件

手动修改config文件中变量的值,然后读取并打印出来。
UE 自定义Config文件存储位置及文件名_第4张图片UE 自定义Config文件存储位置及文件名_第5张图片
在这里插入图片描述

7 代码总结

.h头文件内容:

UCLASS(Blueprintable, config = Game)
class UECESIUMEX_TAIWAN_API UDTIS_ConfigFile : public UObject
{
	GENERATED_BODY()
	
public:
	UDTIS_ConfigFile();

	UFUNCTION(BlueprintCallable)
	void LoadCustomConfig();
	UFUNCTION(BlueprintCallable)
	void SaveCustomConfig();
	UPROPERTY(BlueprintReadWrite, Config)
	float ExampleVariable;

private:
	FString ConfigPath;
};

.cpp文件内容:

UDTIS_ConfigFile::UDTIS_ConfigFile()
{
	// 自定义配置文件目录
	ConfigPath = FPaths::ProjectDir() / TEXT("Settings/Custom.ini");
}

void UDTIS_ConfigFile::LoadCustomConfig()
{
	GConfig->Flush(true, ConfigPath);
	ReloadConfig(this->GetClass(), *ConfigPath);
	UE_LOG(LogTemp, Warning, TEXT("LoadCustomConfig"));
}

void UDTIS_ConfigFile::SaveCustomConfig()
{
	SaveConfig(CPF_Config, *ConfigPath);
	GConfig->Flush(false, ConfigPath);
	UE_LOG(LogTemp, Warning, TEXT("SaveCustomConfig"));
}

你可能感兴趣的:(UE,c++,ue4,ue5)