【Unity】AddressablesでComponentをロードすることは(多分)できない!
例
以下のようなコード。
private async UniTask Load() { var handle = Addressables.LoadAssetsAsync<HogeComponent>("AssetsPath", null); await handle.Task; if (handle.Status == AsyncOperationStatus.Succeeded) { // 何らかの処理 } Addressables.Release(handle); }
このようなコードだとエラーが出てしまいます。
どうやらLoadAssetAsync
では、コンポーネントクラス等は直接ロードできないようです。
解決法
GameObject
やScriptableObject
等はロードできるので、そこから対象のComponent
を取得しましょう。
private async UniTask Load() { var handle = Addressables.LoadAssetsAsync<GameObject>("AssetsPath", null); await handle.Task; if (handle.Status == AsyncOperationStatus.Succeeded) { foreach (var res in handle.Result) { var component = res.GetComponent<HogeComponent>(); // 処理 } } Addressables.Release(handle); }