この記事でのバージョン
Unity 2018.4.8f1
はじめに
Addressable Assetsのアドレスはファイル名とは別に自由に設定できますが、
なんと同じアドレスを設定する事が出来てしまいます。
しかも設定時、ロード時共にエラーも出ないので、
気付かず重複していて、思ったのと違うのをロードしていたなんて事にもなりかねません。
using UnityEngine; using UnityEngine.AddressableAssets;//Addressablesを使うのに必要 public class NewBehaviourScript : MonoBehaviour { private void Start () { //AlchemistというAddress(3件重複している)のSpriteを非同期でロード Addressables.LoadAssetAsync<Sprite>("Alchemist").Completed += op => { //ロード結果をログで確認 Debug.Log(op.Result.name); }; } }
という事で、Addressable Assetsのアドレスの重複を検知するエディタ拡張を作ってみました!
なお、記事中の画像は以下のアセットを使っております。
2D Medieval Fantasy Character Pack | 2D Characters | Unity Asset Store |
AddressDuplicateDetecter
さっそくAddressable Assetsのアドレスの重複を検知するクラス
AddressDuplicateDetecterのプログラムです!
AddressDuplicateDetecterを生成後、上部にある
監視対象のディレクトリへのパス(TARGET_DIRECTORY_PATH)を設定すれば、
//監視対象のディレクトリへのパス private static readonly string TARGET_DIRECTORY_PATH = "Assets/AddressableAssetsData/AssetGroups";
Tools/Detect/Address Duplicateが実行出来るようになり、
実行時にアドレスの重複があればエラーを表示するようになります。
また、アドレスを変更したり、新たなアセットを追加したりなどの
変更があると、自動で重複をチェックするようにもなります。