検証環境
概要
- Addressables で管理しているグループが多いと、
Addressables.UpdateCatalogs の処理に時間がかかるようになり、
メインスレッドが止まってしまう
- 重たい処理は UpdateCatalogsOperation.Execute 関数なので
この部分を Tesk.Run で別スレッドに処理を逃してあげることで
メインスレッドが止まることは防げる
UpdateCatalogsOperation.cs
52 行目以降
protected override async void Execute()
{
var result = await System.Threading.Tasks.Task.Run
(
() =>
{
var catalogs = new List<IResourceLocator>(m_DepOp.Result.Count);
for (int i = 0; i < m_DepOp.Result.Count; i++)
{
var locator = m_DepOp.Result[i].Result as IResourceLocator;
string localHash = null;
IResourceLocation remoteLocation = null;
if (locator == null)
{
var catData = m_DepOp.Result[i].Result as ContentCatalogData;
locator = catData.CreateCustomLocator(catData.location.PrimaryKey);
localHash = catData.localHash;
remoteLocation = catData.location;
}
m_LocatorInfos[i].UpdateContent(locator, localHash, remoteLocation);
catalogs.Add(m_LocatorInfos[i].Locator);
}
return catalogs;
}
);
Complete(result, true, null);
}