官方解释:
Tweakptr是引擎对于智能指针的一个弱引用的实现,就是不记录智能指针的引用计数,这样真正的指针不会因为这个 Tweakptr的指向而不能被释放。对应的是智能指针是TSharedPtr。
另外引擎还有一个TWeakObjectPtr,是表示不真正引用UObject,而导致这个UObject不能被GC,因为GC是通过查找引用关系来决定是否要GC。
TSoftPtr的作用不实际引用一个资源,而是记录这个资源的路径,这样这个类型不会一开始就把资源加载到内存里,而是可以让用户手动决定加载时机。
个人理解:
如果是非UObject类,要引用它又不想因为引用它而影响引用计数,就用TWeakPtr
举例:
TWeakPtr<FDungeonFlowEditor> FlowEditor;
如果是UObject类,要引用它又不想因为引用了而影响GC,就用TWeakObjectPtr
举例:
TArray<TWeakObjectPtr<UObject>> ObjectsBeingCustomized;
对于TSoftPtr,官方解释很清楚了