本文来告诉大家如何在基于 SteamVR 的 Unity3D 里面在用户点击菜单的时候,切换到新的场景的方法

在开始之前,期望大家已阅读过基于 SteamVR 的 Unity3D 相关博客,如果还没了解相关知识,请参阅如下博客

如系列博客的内容,咱通过加入 SteamVR SDK 然后将 Player 拖入到咱的场景中,如下图

如上图,为了演示如何切换场景,咱创建了两个场景,分别是 MainMenuScene 主菜单场景和 Challenge1-1 关卡1场景。下面咱将要在 MainMenuScene 主菜单点击一个叫 Chloroplast 的物体,从 MainMenuScene 切换 Challenge1-1 关卡

如上图,咱给 Chloroplast 物体绑定了 MainMenuNewGameScript 的脚本,为了实现让用户碰触到 Chloroplast 物体就跳转到新的场景功能,咱需要让脚本继承 Interactable 类,如下图代码

var player = GameObject.Find("Player");
GameObject.Destroy(player);

SteamVR_LoadLevel.Begin("Challenge1-1");

上面代码有两个细节部分,第一个是通过 SteamVR_loadLevel 的 Begin 方法切换场景,其次是删除在 MainMenuScene 里面的 Player 对象。如果没有删除 Player 对象,那么在进入到新的场景将会发现自己的手将会两份

接下来咱还需要在游戏的生成里面,将 MainMenuScene 主菜单场景和 Challenge1-1 关卡1场景加入到生成

点击 Unity3D 的文件生成设置

在打开的界面里面添加 MainMenuScene 主菜单场景和 Challenge1-1 关卡1场景,如下图

添加之后可以关闭此窗口,关闭窗口将会自动保存

接下来还需要在 Challenge1-1 关卡1场景里面,将 SteamVR 里面的 Player 加入,否则进入到 Challenge1-1 关卡1场景将会啥都看不见

另外,如果在实现切换场景,发现切换到新的场景时,界面是黑色,啥都看不见,那么请确定你在 场景 里面是否加入了 Player 游戏对象,以及是否在生成设置里面将场景进入到生成

如果前一个场景的 Player 还没销毁,进入新的场景,而新的场景没有定义 Player 那么将会让你的测试工具人很快就晕了,原因是将会在很远处看到手,画面很像在做梦


本文会经常更新,请阅读原文: https://blog.lindexi.com/post/Unity3D-OpenVR-SteamVR-%E7%82%B9%E5%87%BB%E8%8F%9C%E5%8D%95%E5%88%87%E6%8D%A2%E5%9C%BA%E6%99%AF.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。

如果你想持续阅读我的最新博客,请点击 RSS 订阅,推荐使用RSS Stalker订阅博客,或者收藏我的博客导航

知识共享许可协议 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接: https://blog.lindexi.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系

微软最具价值专家


无盈利,不卖课,做纯粹的技术博客

以下是广告时间

推荐关注 Edi.Wang 的公众号

欢迎进入 Eleven 老师组建的 .NET 社区

以上广告全是友情推广,无盈利