2

在 ARFoundation Unity 示例中,我发现了以下代码片段:

public void BackButtonPressed()
        {
            if (Application.CanStreamedLevelBeLoaded("Menu"))
            {
                SceneManager.LoadScene("Menu", LoadSceneMode.Single);
                LoaderUtility.Deinitialize();
            }
        }

有人可以向我解释何时以及为什么使用 Application.CanStreamedLevelBeLoaded(String string) 吗?在 Unity 文档中,我发现这是解释:可以加载流式传输的关卡吗?

但这并没有告诉我什么。

何时以及为什么还要使用LoadSceneMode.Singleand LoaderUtility.Deinitialize()?我发现了这个LoaderUtility.Deinitialize():取消初始化当前活动的 XR 加载器,如果存在的话。这会破坏所有子系统。

我很感激任何帮助。谢谢!

4

1 回答 1

2

Application.CanStreamedLevelBeLoaded完全按照您在读取函数名称时认为应该执行的操作,它检查是否可以加载流式传输的关卡。在尝试实际加载流式关卡之前使用它。在这种情况下,流式传输意味着下载 WebGL 客户端的关卡。流的进度意味着您的关卡下载进度。

使用此功能检查下载状态,就像您在文档示例中看到的那样,以防止在尝试加载未完成的关卡时出现异常。

在幕后,它使用调用downloadProgress的浮点数UnityWebRequest来确定文件是否已下载。

https://docs.unity3d.com/ScriptReference/Networking.UnityWebRequest-downloadProgress.html

在更深处,您很可能会找到一个 FileStream,因此是该函数的名称。

于 2021-02-04T01:09:02.430 回答