以下の内容はhttps://baba-s.hatenablog.com/entry/2021/06/02/090000より取得しました。


【Unity】Addressables でカタログの JSON を読み込む時にメインスレッドが止まらないようにする方法

検証環境

  • Addressables 1.16.19

概要

  • Addressables で管理しているグループが多いと、
    カタログの JSON のサイズが大きくなり、
    カタログの読み込みに時間がかかるようになり、メインスレッドが止まってしまう
  • カタログは JSONAssetProvider クラスで JsonUtility.FromJson で読み込まれるので
    この部分を Tesk.Run で別スレッドに処理を逃してあげることで
    カタログ読み込み時に時間がかかってもメインスレッドが止まることは防げる

JsonAssetProvider

19 行目以降

public override async Task<object> Convert(Type type, string text)
{
    try
    {
        return await Task.Run( () => JsonUtility.FromJson(text, type) );
    }
    catch (Exception e)
    {
        if (!IgnoreFailures)
            Debug.LogException(e);

        return null;
    }
}

TextDataProvider

34 行目

public async void Start(ProvideHandle provideHandle, TextDataProvider rawProvider, bool ignoreFailures)

48 行目

object result = await m_Provider.Convert(m_PI.Type, text);

84 行目

private async void RequestOperation_completed(AsyncOperation op)

93 行目

result = await m_Provider.Convert(m_PI.Type, webReq.downloadHandler.text);

112 行目

public virtual async Task<object> Convert(Type type, string text) { return await Task.FromResult( text ); }



以上の内容はhttps://baba-s.hatenablog.com/entry/2021/06/02/090000より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14