はじめに
忘れないようにメモ代わりにざっくりと
EditorUtility機能を使ってアセット生成をしていると、『出力先に既に同名アセットがあったら、重複しないようにアセット名に連番をつけて生成する』的なことをしたくなります。
単純な処理なので自作も可能ですが、AssetToolsのCreate Unique Asset Nameを使うことでかんたんに実現できます。
C++だと
AssetToolsModule.Get().CreateUniqueAssetName
です。
使い方
Content/Test に Hoge というアセットを保存する場合は In Base Package Name に 『Game/Test/Hoge』を渡します。そして、もし既に重複アセットが存在する場合は Out Package Name が 『Game/Test/Hoge0』、Out Asset Nameが『Hoge0』という結果になります。
もしアセット名の末尾に特定の文字列を付けたい場合は In Suffix に その文字列を指定します。例えば『New』を指定すると、重複アセットがない場合は『Game/Test/HogeNew』、ある場合は『Game/Test/HogeNew0』という結果になります。
さいごに
重複アセットがあるとアセット生成に失敗することは多いですし、仮に生成できても意図せず上書きすることになりトラブルの原因になります。そんな時に今回紹介したAssetToolsのCreate Unique Asset Nameはとても便利なので是非使ってみてください~
ちなみに、単純にアセットの重複にならないかのチェックをしたい場合は DoesAssetExistノード(C++だと UEditorAssetLibrary::DoesAssetExist )が便利です。
おしまい