首先 使用ini文件有两种方式
一种是通过GConfig方式进行读取和存储
读数据 GConfig->GetXXX GConfig->SetXXX
这里如果使用虚幻已有ini文件的话 没有什么问题,但是如果使用自定义的文件路径的话 就需要修改一下了 就是下面的方式
第二种 使用ue4 UPROPERTY变量config 修饰
.h
文件
UCLASS(config = TTT)
class MYPROJECT_API AMyActor : public AActor
{
GENERATED_BODY()
public:
// Sets default values for this actor's properties
UPROPERTY(config, BlueprintReadWrite)
int32 TempA;
这里注意两个地方 一个是UClass的config为你要保存的ini文件名
然后将你要读取的变量的UPROPERTY中添加config
然后在你的工程config目录下创建ini 我这里就是DefaultTTT 注意 需要将你的ini文件添加Default
然后注意ini格式 /Script/你的工程名.你的使用类去掉A或者U之类的前缀
[/Script/Myproject.MyActor]
TempA=6543
这时候就可以运行程序 可以读取到这里面的数值了,然后你如果修改的话,需要重启editor
接下来就是修改该变量并保存
这里还是使用GConfig进行保存,不过路径需要注意,因为程序在打shipping包后变量读取的路径就变成了
C:\Users\用户名\AppData\Local\MyProject\Saved\Config\WindowsNoEditor
对应到程序中就是
FString platFormName = FPlatformProperties::PlatformName();
FString gameConfigPath = FPaths::GameSavedDir() + TEXT("Config/") + platFormName + TEXT("/TTT.ini");
if (GConfig)
{
GConfig->SetInt(TEXT("/Script/Myproject.MyActor"),
TEXT("TempA"),
ttt,
gameConfigPath);
GConfig->Flush(true, gameConfigPath);
}