一.软引用通常是仅储存资源对象的资源路径没有与资源产生耦合关系的引用(软引用加载到内存中,只有在需要的时候才会被加载)
软引用通常有FSoftObjectPath、FSoftClassPath、TSoftObjectPtr、TSoftClassPtr。它指向的资源未被加载,仅仅是提供了一个路径,通过路径找到我们的资源。
创建MySoftActor
二.创建四种软引用指针
UPROPERTY(EditAnywhere,BlueprintReadWrite,Category = "Path")
FSoftObjectPath AssetObjectPath;
UPROPERTY(EditAnywhere,BlueprintReadWrite,Category = "Path")
FSoftClassPath AssetClassPath;
UPROPERTY(EditAnywhere,BlueprintReadWrite,Category = "Path")
TSoftObjectPtr<AActor> AssetObjectPtr; //Object 可以指向一些非类的成员
UPROPERTY(EditAnywhere,BlueprintReadWrite,Category = "Path")
TSoftClassPtr<AActor> AssetClassPtr;
1.FSoftObjectPath保存对象的路径字符串,通过字符串找到所对应的资源(非蓝图资源和蓝图资源都可以)。
FSoftObjectPath MySoftPath("/Game/Path/To/MyAsset.MyAsset");
2.FSoftClassPath继承自FSoftObjectPath,只适用于蓝图资源.
3.TSoftObjectPtr<T> 是包含了`FSoftObjectPath`的`TWeakObjectPtr,保存对象的软引用(非蓝图资源和蓝图资源都可以),SynchronousLoad()加载后.Get()获取资源。侧重于描述某一类资源,比如:静态模型、动态模型、数据表格等。
4.TSoftClassPtr<T> 软类引用,也是智能指针。类似于TSubclassOf,但在运行时加载类,仅适用于蓝图资源。
三.这些引用都可以在编辑面板上,选择对应的资源。