UE4.27, 揣摩源码, 序列化 (四) 应用
4. runtime-UObject正反序列化
4.1 UObject序列化
// tool load
FAssetToolsModule& AssetToolsModule = FModuleManager::Get().LoadModuleChecked<FAssetToolsModule>("AssetTools");
// path solve
FString AssetName, PackageName;
AssetToolsModule.Get().CreateUniqueAssetName(TEXT("/Game/NewActor"), TEXT(""), PackageName, AssetName);
FString PackageLongPath = FPackageName::GetLongPackagePath(PackageName);
// create package
UPackage* MyNewPackage = CreatePackage(*PackageName);
// create uobject
UObject* MyNewObject = NewObject<UObject>(MyNewPackage, AMyActor::StaticClass(), FName(TEXT("MyClassName")), RF_Public | RF_Standalone);
// uobject serialize
UPackage::SavePackage(MyNewPackage, MyNewObject, EObjectFlags::RF_Public | EObjectFlags::RF_Standalone, *FPackageName::LongPackageNameToFilename(PackageName, FPackageName::GetAssetPackageExtension()), GError, nullptr, true, true, SAVE_NoError);
4.2 UObject反序列化
// uobject deserialize
AMyActor* LoadedActor = LoadObject<AMyActor>(nullptr, TEXT("/Game/NewActor.MyClassName"));
5. runtime-普通数据的正反序列化
测试数据约定
相关声明
相关定义
调用,按需注释