Appearance
存档与加载
使用虚幻的存档机制,存档代码必须继承自savegame。
cpp
// 创建存档类继承自savegame,在存档类中书写想要存储的属性,并添加UPROPERTY宏,从而使得属性支持序列化
// 切记!!不要存指针地址,因为地址里的内容会变换
// 在实际的存档处理文件中
APlayerController* pc = GetWorld()->GetFirstPlayerController();
if(!pc)
{
return;
}
if(pc->WasInputKeyJustPressed(EKeys::Q))
{
// 构建存储数据类
UMySaveGame* SaveGame = Cast<USnakeSaveGame>(UGameplayStatics::CreateSaveGameObject(USnakeSaveGame::StaticClass()));
if(SaveGame)
{
// 下面的两个属性是在存档类中创建的
SaveGame->Num = 100;
SaveGame->Name = TEXT("OK");
// 存储
UGameplayStatics::SaveGameToSlot(SaveGame, TEXT("2022年11月17日"), 0); // 参数一数据对象,参数二存档名称,参数三存档位
}
}
if(pc->WasInputKeyJustPressed(EKeys::E))
{
UMySaveGame* LoadGame = Cast<UMySaveGame>(UGameplayStatics::LoadGameFromSlot(TEXT("2022年11月17日"),0));
if(LoadGame)
{
UE_LOG(LogTemp, Log, TEXT("%d"), LoadGame->Num);
UE_LOG(LogTemp, Log, TEXT("%s"), *LoadGame->Name);
}
}