Возврат доходности в AssetBundle.CreateFromMemory
Как сказано в документации IEnumerator
методы выполняются как поток, но я запутался, почему
AssetBundleCreateRequest assetBundleCreateRequest = AssetBundle.CreateFromMemory(ByteArray);
yield return assetBundleCreateRequest;
зависает моя игра на 2 секунды. Кто-нибудь может объяснить?
1 ответ
Ну, он останавливается на 2 секунды, потому что это то, что вы на самом деле запрашиваете с вашей доходностью assetBundleCreateRequest
Асинхронная операция сопрограммы.
Вы можете сдавать до тех пор, пока не продолжится асинхронная операция, или вручную проверить, выполнена ли она (isDone) или выполняется (прогресс). AsyncOperation
Итак, прямо сейчас вы просите свою сопрограмму подождать, пока ваш запрос об активе не будет завершен.
Для ручной проверки, выполняется ли эта функция, без необходимости замораживать приложение, вместо этого будет использоваться команда isdone или progress
Если вам нужны дополнительные разъяснения, не стесняйтесь комментировать.
редактировать
Пример использования isdone
AssetBundleCreateRequest acr = AssetBundle.CreateFromMemory(decryptedData);
while (!acr.isDone)
{
yield;
}
AssetBundle bundle = acr.assetBundle;