如何在 Three.js 场景中包含 OVRManager?

2024-05-10

我创建了几个 Three.js/Javascript 演示应用程序,正在我的新 Oculus Go 中进行试验。我正在尝试让 Go 控制器在我的应用程序中执行某些操作,根据 Oculus 开发人员中心的说法,最好的办法是将 OVRManager 包含在我的场景中,这样我就可以访问该 API。听起来不错,但是对于所有文档(https://developer.oculus.com/documentation/unity/latest/concepts/unity-ovrinput/ https://developer.oculus.com/documentation/unity/latest/concepts/unity-ovrinput/)我不知道如何将 OVRManager 添加到我的场景中!我以前没有使用过 Unity,但从文档中可以看出,不应该有任何兼容性问题(应该有吗?)

所以我想做的是:

<script src="OVRManager.js or something like that"></script>

然后调用我需要的函数,就像我对 OrbitControls.js 和其他外部依赖项所做的那样。

但对我来说,谷歌搜索只是让我原地踏步。我看到针对 C++ 和 C# 提出的问题,但这对我来说没有用。如何让这个 API 在我的 Three.js 场景中工作?我在哪里可以找到它,还有其他方法可以包含它吗?

Thanks!


创建 Unity WebGL 构建并将所需的 API 作为附加到游戏对象的 Unity 脚本中的公共方法公开。

然后,您应该能够按照以下网址的说明进行操作如何从 javascript 调用 Unity 函数 https://docs.unity3d.com/Manual/webgl-interactingwithbrowserscripting.html(复制如下)了解如何从 javascript 代码调用这些方法。

如果您使用旧版本的 Unity,则可以使用与 JavaScript 有点相似的 UnityScript 来编写脚本。截至撰写本文时,Oculus推荐 https://developer.oculus.com/documentation/unity/latest/concepts/unity-sdk-version-compatibility/版本2017.4.11f1,我think可能仍支持 UnityScript。

您看到的 UnityScript 信息如此之少的一个主要原因是 Unity 已经从 UnityScript 转向仅支持 C#。

但无论您使用 C# 还是 UnityScript 编写 OVRManager 脚本,Unity 将使这些方法可以从 JavaScript 中调用。

从 JavaScript 调用 Unity 脚本函数

有时你需要向Unity发送一些数据或通知 来自浏览器 JavaScript 的脚本。推荐的做法 是调用方法GameObject包含在您的内容中。如果你正在制作 来自嵌入在您的项目中的 JavaScript 插件的调用,您可以 使用以下代码:

SendMessage(objectName, methodName, value);

Where objectName是场景中对象的名称;methodName是 脚本中当前附加到该对象的方法的名称; value 可以是字符串、数字,也可以为空。例如:

SendMessage('MyGameObject', 'MyFunction');
SendMessage('MyGameObject', 'MyFunction', 5);

SendMessage('MyGameObject', 'MyFunction', 'MyString');

如果您想从全球范围内拨打电话 嵌入页面,请参阅下面的代码可见性部分。

代码可见性

从 Unity 5.6 开始,所有构建代码都在自己的环境中执行 范围。这种方法可以将您的游戏嵌入到 任意页面,不会与嵌入页面代码发生冲突, 以及可以在同一个构建上嵌入多个构建 页。

如果您的所有 JavaScript 代码都是 .jslib 插件的形式 在你的项目中,那么这段 JavaScript 代码将在 与已编译的构建范围相同,您的代码应该可以正常工作 与以前版本的 Unity 相同(例如, 以下对象和函数应该可以直接从 JavaScript 插件代码:Module、SendMessage、HEAP8、ccall 等)。

但是,如果您打算调用内部 JavaScript 函数 从嵌入页面的全局范围来看,您应该始终假设 页面上嵌入了多个版本,因此您应该 明确指定您要引用的构建。例如,如果 您的游戏已实例化为:

var gameInstance = UnityLoader.instantiate("gameContainer", "Build/build.json", {onProgress: UnityProgress});

然后您可以使用以下命令向构建发送消息 gameInstance.SendMessage(),或使用以下方式访问构建模块对象 游戏实例.模块。

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

如何在 Three.js 场景中包含 OVRManager? 的相关文章

随机推荐