读写文件的选项(Flags)
读文件选项:
1 | FILEREAD_None //空状态,用于函数默认参数 |
写文件选项:
1 | FILEWRITE_None //空状态,用于函数默认参数 |
以某些名称命名的文件是不可创建的。可以使用FFileHelper::IsFilenameValidForSaving函数来检查文件名称是否有效参考:命名文件、路径和命名空间 - Win32 apps | Microsoft Learn。
读写的文件类型
文本文件
UE字符编码
支持的文件字符编码:
ASCII、UTF-8、UTF-16。其中ASCII是UTF-8的子集。特别注意UE4并不支持ANSI编码,在UE4中ANSI指的是ASCII
读文本文件时:
会自动判断文件为UTF-8或UTF-16,并将其转换为TChar类型。ASCII为UTF-8的子集,不必考虑
写文本文件的编码选项:
1 | EEncodingOptions::AutoDetect //在ANSI与UTF16编码之间自动选择 |
通用文本文件操作
1 | FFileHelper::SaveStringToFile//保存FString到文件 |
Config文件加载
数据加载方法:
- 参考通用文本文件操作方法来读取配置文件
- 解析读取到的数据,保存到GConfig类中
数据加载时机:
- 在游戏初始化时加载基本的Config文件(BaseEngine.ini、DefaultInput.ini等)的数据到GConfig类中
- 对于自定义的Config文件,在使用(如GConfig->GetInt)时,会动态的同步加载。
优点:
- 一般配置文件体积较小,加载迅速
- 文本文件存储,语法简单,便于编辑
- 文件读取之后就常驻内存,读写方便
二进制文件
游戏数据保存与读取
1 | UGameplayStatics::LoadGameFromSlot//加载GameSave类的数据,核心分成了两步:加载文件到内存、解析内存中的数据并反序列化为对应的USaveGame类 |
USaveGame是一个便于反序列化与序列化的类,UE在GameplayStatics中额外封装了便于使用的API。当某些数据需要本地化存储以及读取时,使用这个类会很方便。
直接使用TArray