在后台加载新场景

2024-04-04

我正在创建一个针对 Samsung Gear VR 的 Unity 应用程序。我目前有两个场景:

  1. 最初的场景
  2. 第二个场景,数据量大(加载场景需要太多时间)。

从第一个场景开始,我想在后台加载第二个场景,并在加载后切换到它。当新场景在后台加载时,用户应该保持移动头部的能力来查看 VR 环境的任何部分。

我在用着SceneManager.LoadSceneAsync但它不起作用:

// ...

StartCoroutiune(loadScene());

// ...

IEnumerator loadScene(){
        AsyncOperation async = SceneManager.LoadAsyncScene("Scene", LoadSceneMode.Single);
        async.allowSceneActivation = false;
        while(async.progress < 0.9f){
              progressText.text = async.progress+"";
        }
       while(!async.isDone){
              yield return null;
        }
        async.allowSceneActivation = true;
}

使用该代码,场景永远不会改变。

我已经尝试过这个典型的SceneManager.LoadScene("name")在这种情况下,场景会在 30 秒后正确更改。


这应该有效

    while(async.progress < 0.9f){
          progressText.text = async.progress.ToString();
          yield return null;
    }

其次,我见过这样的案例isDone永远不会设置为 true,除非场景已激活。删除这些行:

    while(!async.isDone){
          yield return null;
    }

最重要的是,您将代码锁定在第一个 while 循环中。添加产量,以便应用程序可以继续加载您的代码。

所以你的整个代码如下所示:

IEnumerator loadScene(){
    AsyncOperation async = SceneManager.LoadAsyncScene("Scene", LoadSceneMode.Single);
    async.allowSceneActivation = false;
    while(async.progress <= 0.89f){
          progressText.text = async.progress.ToString();
          yield return null;
    }
    async.allowSceneActivation = true;
}

不过,问题的最大罪魁祸首是第一个 while 循环中的锁定。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在后台加载新场景 的相关文章

  • 如何使用 VS2022 中的新控制台应用程序模板访问命令行参数

    我想知道如何访问命令行参数 因为这是在Program cs通过 Visual Studio 2022 中控制台应用程序的新模板创建文件 See https aka ms new console template for more infor
  • 在列表中查找匹配项的最简洁方法

    在列表中查找内容的最佳方式是什么 我知道 LINQ 有一些不错的技巧 但我们也可以获取有关 C 2 0 的建议 让我们对这个常见的代码模式进行最佳重构 目前我使用这样的代码 mObjList is a List
  • 在 C++ 中,当我将值传递给函数时,它是否总是转换为适当的类型?

    如果我有一个像这样的函数void func size t x 我称该函数为func 5 5 立即转换为size t类型 这通常适用于所有类型吗 我问这个问题是因为我发誓我见过人们编写代码 他们做类似的事情func 5 0 将 5 作为双精度
  • MVC 中的 Blazor:组件被渲染,但 @onclick 不起作用。连接问题

    我正在尝试在 net core 3 MVC 项目中使用 Blazor 我使用了一些教程来做到这一点 例如https fizzylogic nl 2019 08 18 integrating blazor in an existing asp
  • 函数的不明确的引用/值版本

    考虑以下函数原型 void Remove SomeContainer Vec const std size t Index SomeContainer Remove SomeContainer Vec const std size t In
  • 不能使用函数名称距离

    以下代码可以正常编译 include
  • ASP.NET Core 中 AsNoTracking 的模拟或更好的解决方法

    您如何模拟 AsNoTracking 或者是否有更好的解决方法来解决此问题 Example public class MyContext MyContextBase Constructor public MyContext DbContex
  • MSVC10 /MP 在项目中跨文件夹构建非多核

    我希望有人指出我们所遇到的错误或解决方法 使用 MP 编译项目时 似乎仅同时编译同一文件夹中的文件 我使用进程资源管理器来滑动命令行并确认行为 项目过滤器似乎对同时编译的内容没有影响 项目结构disk Folder project vcxp
  • 如何(可移植地)在 C 和 C++ 中获取 DBL_EPSILON

    我正在 Linux AS 3 上使用 GCC 3 4 并试图找出DBL EPSILON 或者至少是一个不错的近似值 我怎样才能以编程方式获取它 在 C 中是std numeric limits
  • 为什么Windsor只能拦截虚方法或接口方法?

    我正在阅读文档 发现如果不使用接口 那么 Windsor 只能拦截虚拟方法 这是 Windsor 的限制还是 C 语言的限制 我正在寻找深入的答案 C 语言在这里完全无关 问题是拦截在运行时级别如何工作 一种技术是从类继承 实现接口并将其用
  • 为什么我在这段代码中不断得到两个相同的随机值? [复制]

    这个问题在这里已经有答案了 可能的重复 为什么我的随机数生成器在 C 中不是随机的 https stackoverflow com questions 932520 why does it appear that my random num
  • Xamarin.Android JmDNS 绑定问题

    我开始研究 Xamarin Android 的 JmDNS 绑定 我设法构建了绑定 但无法从代码中引用它 https github com ytn3rd monodroid bindings tree master JmDNS https
  • C# 或 Windows 相当于 OS X 的 Core Data?

    我迟到了 现在才开始在 OS X Cocoa 中使用 Core Data 它令人难以置信 并且确实改变了我看待事物的方式 C 或现代 Windows 框架中是否有等效的技术 即拥有可免费保存 数据管理 删除 搜索的托管数据类型 还想知道Li
  • 更改成员资格、角色等的默认连接字符串

    默认情况下 我的网络应用程序似乎正在使用LocalSqlServer作为用于任何应用程序服务 例如成员资格 角色 身份验证 等 的连接字符串 有什么方法可以更改默认连接字符串应该是什么 默认值是 LocalSqlServer 似乎很随意 我
  • PARITY_NONE 是 C++ Windows 中的关键字吗?

    我正在使用 boost 编写一个串行库 并且我有一个枚举 enum parity t PARITY NONE PARITY ODD PARITY EVEN 我收到如下错误 错误 1 错误 C2059 语法错误 我无法弄清楚问题是什么 然后我
  • 不兼容的指针到字符转换

    我正在编写一个程序 将卡片值写入 52 个点字符的多维数组中 该程序是一个测试数组 稍后我将其作为函数写入主程序中 在程序中 我通过以下方式初始化 for 循环计数0通过51 我用一个switch语句调制13将卡牌值分配给数组点 但是 我收
  • 在标准 C 中将 int 转换为 string

    我是 C 新手 我正在寻找一个可以调用函数进行转换的示例int串起来 我发现itoa但这不是标准 C 的一部分 我还发现sprintf str d aInt 但问题是我不知道所需的 str 的大小 因此 我如何传递输出字符串的正确大小 有多
  • 使用 Crypto++ 和 .NET 的 CFB 模式下的 TripleDES

    我正在尝试使用 TripleDES 使用 C 应用程序获得相同的结果 该应用程序具有Crypto https www cryptopp com 和 NET应用程序使用三重DESCryptoServiceProvider https msdn
  • 频繁插入已排序的集合

    我已经对集合 列表 进行了排序 并且我需要始终保持其排序 我目前在我的集合上使用 List BinarySearch 然后在正确的位置插入元素 我也尝试过在每次插入后对列表进行排序 但性能不可接受 有没有一种解决方案可以提供更好的性能 也许
  • 清理 TPL 中的 CallContext

    根据我使用的是基于 async await 的代码还是基于 TPL 的代码 我在逻辑清理方面得到了两种不同的行为CallContext 我可以设置和清除逻辑CallContext如果我使用以下异步 等待代码 正如我所期望的 class Pr

随机推荐

  • 获取 xml body 的所有元素并添加到 struct

    我正在寻找一种方法来循环 XML Body 并将每个 xml 元素传递到结构中 我通过以下方式访问了 xml 主体
  • 随着时间的推移围绕枢轴点旋转游戏对象

    我使用以下代码相对于另一个枢轴点旋转一个点 Vector3 RotatePointAroundPivot Vector3 point Vector3 pivot Vector3 angles Vector3 dir point pivot
  • 尝试共享图像时 Facebook 不会出现在共享窗口上

    我在应用程序中创建了一个位图 并希望使用 Intent ACTION SEND 通过电子邮件应用程序或 Facebook 共享它 共享窗口打开 gmail 和 yahoomail 应用程序图标出现 但没有 facebook 或 g 我真的不
  • @PostConstruct 中没有会话休眠

    MyDao 类具有通过 Hibernate SessionFactory 执行整个持久性任务的方法 它工作得很好 我在 MyService 中注入了 MyDao 如上所示 但是当在注入 MyDao 后调用 PostConstruct ini
  • 更好地理解 Java 中的递归

    好吧 我对 Java 中的递归有些困惑 假设我有以下代码 static int findShortestString String paths int lo int hi if lo hi return lo int minindex fi
  • mongos 上的 MongoDB 错误:位置选项太多

    我正在尝试运行一个批处理脚本 这应该是我第一次在 mongodb 上进行分片 它在这一行显示以下错误 D mongodb win32 x86 64 2 2 3 bin gt mongos configdb localhost 26050 l
  • 我可以使用 shmctl 调整 Linux 共享内存的大小吗?

    我有一个 C 应用程序 它通过 shmget 2 在 Linux 系统上分配共享内存 我存储在共享内存中的数据会定期增长 我想以类似于 realloc 增长常规内存的方式调整共享内存的大小 有没有办法做到这一点 我在 IBM 网站上找到了一
  • Python 许多依赖项中的任何一个

    我有时会遇到这样的情况 我有一个包可以依赖于包 A 或 B 例如 我的项目依赖于一个名为spam 如果该项目重命名为pyspam 我的项目可以取决于spam or pyspam 我无法弄清楚 或找到 如何在 setup py 中定义此类依赖
  • 安装 Angular 不支持的引擎,OSX

    我正在重新安装我的 MacBook 当我安装 npm install g angular cli Angular 时 我收到以下消息 知道为什么吗 我怀疑 nom 版本 但我附带了节点 Developments npm install g
  • PIL 改变颜色通道强度

    我想制作一个颜色选择器 它可以重新着色 png 纹理 同时保留 python3 中的透明度 我只希望图像的较亮部分重新着色 但也保持渐变 我能想到的唯一选择是调整颜色通道强度 但是我在 PIL 文档中没有找到类似的内容 如何更改颜色通道强度
  • 查找哪个文本框为空

    我有一个简短的 Windows 程序 用来快速添加信息 但现在我正在努力增强它 正在寻找一种更有效的方法来检查空文本框 如果该框为空 则找出它是哪一个并将焦点设置回仅该框 目前 我循环遍历所有这些框 并检查是否有任何框是空的 如果它只是显示
  • Android Drawable(进度条、开关)渲染问题

    我正在尝试实现下面的用户界面 我正在使用带有 ADT 插件的 Eclipse 下面是圆 白色 深灰色 的实现 circle shape xml
  • 页面加载 - 页面之间出现白色“闪烁”

    有两个网站 一个正在运行 一个正在开发中 我正在将一个站点移植到 Zend Framework 出于可维护性 集成目的 原始 实时 站点具有无缝页面加载 它将加载 然后更新屏幕上的内容 同时保留页面上的背景图像 导航等 移植的网站 开发 会
  • 在 Swift 3.0 中创建目录

    我是一名九年级新生swift 创建一个学校项目 我正在尝试创建一个目录 将扫描文件保存为 pdf 格式 创建目录时出现以下错误 错误1 无法在属性初始值设定项中使用实例成员 filemgr 属性初始值设定项在 self 可用之前运行 Err
  • 如何使用相同的函数按行比较矩阵列表

    假设我有一个包含两个矩阵的列表 x and y x lt c 3 4 5 5 3 4 5 6 5 6 2 1 x lt matrix x 3 4 y lt c 3 4 5 5 3 4 5 6 5 5 2 1 y lt matrix y 3
  • 在字符串中添加新行以进行翻译

    我正在使用 ngx 翻译 如何在要翻译的字符串中添加换行符 在我的模板中 我有 STRING TO TRANSLATE translate 在我的 en json 中 STRING TO TRANSLATE text on first li
  • 如何将纪元转换为日期时间红移?

    我在 dbeaver 工作 我有一个表x 表 x 有一个 时间戳 列 1464800406459 1464800400452 1464800414056 1464800422854 1464800411797 我想要的结果 Wed 01 J
  • ggplot根据数据框中的值重新排序堆积条形图

    我正在 R 中使用 ggplot2 制作堆积条形图 并在 y 轴上具有特定的条形排序 create reproducible data library ggplot2 d lt read csv text Day Location Leng
  • BASH if 语句中的函数返回值

    我已经研究了这里处理 BASH if then 语句中的函数返回值的各种方法 但似乎都不起作用 这是我所拥有的 function is cloned if d DIR NAME then return SUCCESS fi return F
  • 在后台加载新场景

    我正在创建一个针对 Samsung Gear VR 的 Unity 应用程序 我目前有两个场景 最初的场景 第二个场景 数据量大 加载场景需要太多时间 从第一个场景开始 我想在后台加载第二个场景 并在加载后切换到它 当新场景在后台加载时 用