検証環境
概要
- 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 ); }