6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[Unity]Addressableキー存在確認 なぜかAddressableのデータを読み込めない?

Last updated at Posted at 2021-02-03

この記事は伝えたいことが1個しかありません。
#Addressableのバージョンは1.16.10です

1.Addressableのキーの存在確認。
2.Addressableが読み込めていない。

1.Addressableのキーの存在確認。
  専用のAPIあったら教えてほしい。   keyは大文字小文字の区別をつけないとだめです。
keycheck.cs
using UnityEngine.ResourceManagement.ResourceLocations;

public static bool Exist<T>(string key, out IResourceLocation location)
{
    location = null;
    foreach (var local in Addressables.ResourceLocators)
    {
        local.Locate(key, typeof(T), out IList<IResourceLocation> resourceLocations);
        if (resourceLocations != null)
        {
            if (resourceLocations.Count >= 2) DebugS.LogWarning($"key = {key} type = {typeof(T).Name} is Find {resourceLocations.Count} datas.");
            location = resourceLocations[0];
            return true;
        }
    }
    return false;
}

2.Addressableが読み込めていない。
 1.のキーチェックでタイミングによってはデータをチェックできたりできなかったりしてました。  チェックができない理由はAddressableが初期がされる以前にアクセスしているから。  回避方法は「await Addressables.InitializeAsync().Task;」とかやった後にチェックする。  当方UniTask使いゆえサンプル書いたけどあとはフィーリングでなんとかして!
LoadData.cs
public async UniTask LoadInitialData(string KeyName)
{
    await Addressables.InitializeAsync(); // ここ重要
    if (Exists<T>(keyName, out var location))
        instance = await Addressables.LoadAssetAsync<T>(location);
    if (instance == null) instance = CreateInstance<T>();
}

もしかしてまだAddressable正式版じゃない説ある!ある?

そもそもなんでAddressables.LoadAssetAsync(keydata)で存在しなかったらInvalidExceptionになるんだよおかしいだろ!例外キャッチできないし、そも例外はスマートじゃないだろいい加減にしろ!

コメントで教えてもらいました

存在確認が良い感じにいけたので共有を兼ねてここにも張り付けておきます!
Hoge.cs
    public static async UniTask<bool> Exists(string pathToAsset)
        => (await Addressables.LoadResourceLocationsAsync(pathToAsset)).Any();

@taishi-matsumuraさんありがとうございます!

6
3
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?