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-普通数据的正反序列化
测试数据约定

 

相关声明

 

 

相关定义

 

 

调用,按需注释

 

posted @ 2024-12-29 21:13  在找饭吃的陈  阅读(57)  评论(0)    收藏  举报