UE4 AssetManager

UE4 AssetManager

介绍

UAssetManager是UE4提供给开发者的资源管理类,大家知道一般情况下UE4会自动加载和卸载资源,然而我们有些时候项目需要对资源有更多地掌控则就需要它来帮忙了。

Tip:UAssetManager本质是对StreamableManager的封装。

资源分类

PrimaryAsset(主资源)

在游戏中可以进行手动载入/释放的东西。包括地图文件以及一些游戏相关的物件,默认情况下只有Map是PrimaryAsset。

SecondaryAsset(次资源)

除了PrimaryAsset外都是,例如贴图声音等。SecondaryAsset都是跟随着PrimaryAsset自行加载的。所以一般代码中都是直接对PrimaryAsset进行加载无需关心SecondaryAsset。

将SecondaryAsset提升为PrimaryAsset

在资源类重载FPrimaryAssetId GetPrimaryAssetId()参数为对象类型和对象的资源名称。

对象类型推荐在UAssetManager类中定义FPrimaryAssetType类型的静态变量来定义资源类型。

AssetType注册方法

编辑器注册

如果需要在蓝图中引用该资源的话则需要在编辑器中Game=>AssetManager中进行AssetType的设置。可以进行下列参数的设置

  1. PrimaryAssetType(必须和上面定义的FPrimaryAssetType类型的静态变量名称一致)

  2. Asset base Class

  3. HasBlueprint Classes

  4. Directories

  5. Rules

代码注册

编写UMyAssetManager继承UAssetManager重写 UAssetManager的StartInitialLoading 函数并从该处调用 ScanPathsForPrimaryAssets。因此,推荐您将所有同类型的主资源放入相同的子文件夹中。这将使资源查找和注册更为迅速。

 

 

ScanPathsForPrimaryAssets(TEXT("Flower"), TArray<FString>{"/Game/Path"}, UObject::StaticClass(), true);
ScanPathForPrimaryAsset(GameItem, TArray<FString>{"/Game/Path/Items"}, USGItems::StaticClass(), false);

 

这里还需要记得后续要将编辑器中Engine=>General Settings=>Asset Manager Class改为UMyAssetManager。

常用函数

  1. LoadPrimaryAssets

  2. LoadPrimaryAsset

  3. LoadPrimaryAssetsWithType

  4. UnloadPrimaryAssets

  5. UnloadPrimaryAsset

  6. UnloadPrimaryAssetsWithType

使用这些加载函数时,可指定一个资源束列表。以此法进行加载将使资源管理器按以上描述的方式加载这些资源束应用的次资源。

资源束

资源束(Asset Bundle) 是与主资源相关特定资源的命名列表。

 

 

UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = Display, AssetRegistrySearchable, meta = (AssetBundles = "TestBundle"))

 

用“AssetBundles”元标签可以对UObject 的TAssetPtr和FStringAssetReference 成员的 UPROPERTY 代码段进行标记即可创建资源束。

标志后UObject 被保存时将被添加到名为“TestBundle”的资源束。

 

 

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值