Unity 使用LoadFromFileAsync无法加载的问题

本文链接:https://blog.csdn.net/t163361/article/details/82753084
最近准备申请新星创作者,需要2000个粉丝关注,觉得文章有用的,请点一下左侧边栏的关注,谢谢。

最近在优化资源加载的时候,发现LoadFromFileAsync这个函数在我们的加载模块怎么都不会加载,process一直是0.
之前资源加载使用的是WWW的加载方式。
但是单独写一个测试代码却跑的溜溜的。
各种查资料也没有一个明确的答复。
最后发现是因为我们项目切场景时候设置了allowSceneActivation=false导致的~

这个时候执行LoadFromFileAsync没问题
AsyncOperation op = SceneManager.LoadSceneAsync(sceneName);
op.allowSceneActivation=false;
这个时候执行LoadFromFileAsync会一直被卡住
while(!op.isDone&&op.prorpess<0.9f)
{
	yield return new WaitFroEndOfFrame();
}
op.allowSceneActivation=true;
这个时候执行LoadFromFileAsync也没问题

如果处于allowSceneActivation=false的状态,会导致LoadFromFileAsync这个方法被阻塞而无法被加载
查了下官方文档
https://docs.unity3d.com/ScriptReference/AsyncOperation-allowSceneActivation.html
里面有这么一句话

When allowSceneActivation is set to false then progress is stopped at 0.9. The isDone is then maintained at false. When allowSceneActivation is set to true isDone can complete. While isDone is false, the AsyncOperation queue is stalled. For example, if a LoadSceneAsync.allowSceneActivation is set to false, and another AsyncOperation (e.g. SceneManager.UnloadSceneAsync ) is initialized, the last operation will not be called before the first allowSceneActivation is set to true.
然后细看了下他们的继承关系
LoadFromFileAsync的返回值AssetBundleCreateRequest继承于AsyncOperation。
处理方案就显而易见了。只能绕开这个坑了。
后记:
Resources.LoadAsync也会遇到这个问题。

你可能感兴趣的:(Unity,Unity,无法加载)