我可以使用std :: vector,std :: unordered_map代替TMap,TVector ......等等。
我需要一个类来序列化它的所有信息,我的代码已经可以用于stl。
我测试过尝试在它们上使用UPROPERTY并且它不可能,(任何方法都可以这样做?)。但我对此很满意。
我需要知道的是当整个班级的某些成员是stl容器时序列化整个班级会发生什么。
答案 0 :(得分:0)
你不应该使用它们。
您不应该使用标准C ++库,然后与外部库进行通信,如果您使用它们,则应避免对它们使用UFUNCTION和UPROPERTY。 https://answers.unrealengine.com/questions/180421/how-to-use-c-standard-library-std.html
如果你需要序列化属性,我想建议使用Rama的系统(UE Wiki)。我在游戏中使用它来保存/加载数据到二进制文件,但它可以很容易地扩展到通过网络发送数据。
基本上,在那个系统中,你正在重载<<
运算符。优点是您可以在一个地方定义所有结构,一个功能可以用于保存和加载。 注意我在尝试编译代码时遇到了编译问题:
TArray<UObject> array = // init
// ar is container to serialization
ar << array;
但我通过将UObject
映射到UStruct
来解决这个问题,所以代码就像
TArray<FStruct> array = // init
// as is container to serialization
ar << array; // now, this will compile
这是在UE 4.15中,有可能在以后的版本中解决了。
如果你想更多地检查我对Rama的系统系统的实现,你可以查看我对我的游戏TCF2 (GitHub)的回购。您正在寻找/Source/GameSave/[Public|Private]/SaveGameCarrier
- 这是我保存的主要课程。可以在/Source/Inventory/Public/InventoryHelpers.h