😽

[UE5][C++] AssetManagerの作成

2023/05/25に公開

概要

今回はAssetManagerのカスタムクラス作成に最低限必要な情報をまとめました。

AssetManagerはその名の通り、
アセットを管理するための機能なのですが、
主にプライマリアセットロード関連で出番が多い印象です。
他にもチャンク設定などにも使えますが、とりあえずあると便利な機能が詰まっています。

デフォルトクラスのままでも使えないことはないですが、
カスタムクラスにするとやれることが増えます。
※AssetManagerに限った話ではないですが...

AssetManagerのカスタムクラスの作成

UE5のエディタ上から、AssetManagerの親クラスを作成します。

その後VisualStudioで確認すると、ほぼ空のクラスになっているかと思います。
とりあえず用意しておくべき関数が、以下のAssetManagerを取得するための関数です。
UAssetManagerのGet関数

	/**
	*	@brief	Get MyAssetManager.
	*/
	static UMyAssetManager& GetAssetManager();

上記のように、カスタムクラス用のGet関数を定義します。
※関数名をGetにするとエラーがでるので、親クラスと被らない関数名を付けてください。

続いて実装ですが、実装は以下のようにします。

UMyAssetManager& UMyAssetManager::GetAssetManager()
{
	UMyAssetManager* AssetManager = Cast< UMyAssetManager>(GEngine->AssetManager);
	if (AssetManager)
	{
		return *AssetManager;
	}
	else
	{
		return (*NewObject<UMyAssetManager>());
	}
}

内容としては、AssetManagerを持ってきてカスタムクラスにキャストしているだけです。

カスタムAssetManagerクラスをデフォルトにする

ここまではまだカスタムAssetManagerクラスを作っただけです。
使用できるようにするには、Editorで設定を行う必要があります。

デフォルトでは、上記画像のようにAssetManagerというクラスになっているかと思います。
ここを今回作成したカスタムクラスに置き換えることができるので、置き換えましょう。

まとめ

カスタムクラス作る最大のメリットは、
PrimaryAssetDataとのコンビネーションにあると思っています。

是非PrimaryAssetDataの記事もご確認ください。

Discussion