Addressable ではディレクトリにアドレスを設定することができる
しかし、実際にそのアドレスをロードしようとすると、次のエラーが出てしまいます
UnityEngine.AddressableAssets.InvalidKeyException: Exception of type 'UnityEngine.AddressableAssets.InvalidKeyException' was thrown. No Location found for Key=Prefab
UnityEngine.AddressableAssets.Addressables:LoadAssetAsync<UnityEngine.GameObject> (object)
Addressable Groupsを確認してみると、アドレスを設定したディレクトリ内のアセットには、自動的にアドレスが設定されています
しかも、アセットの名前は自動的に {dirName}/{name}.{extension}
の形式で付けられるため、変更できません
ディレクトリにアドレスを付けることのメリットは、Bundle Mode
が Pack Separately
でも、ディレクトリ以下のアセットが別々にバンドルになることなく、全て一つのバンドルにまとまることだと思います
もし、指定したディレクトリ以下のアセットをロードするには以下のように ResourceLocators
の中から探すとかでしょうか?
var targetDirAddress = new List<string>(); foreach (var rl in Addressables.ResourceLocators) { foreach (var key in rl.Keys) { if (!(key is string k)) continue; if (!k.StartsWith(LocalDirPath) || !k.Contains(".")) continue; targetDirAddress.Add(k); } }