隐藏的Unity WebGL应用程序:"屏幕位置超出视锥体"

时间:2018-03-17 11:59:57

标签: unity3d unity-webgl frustum

我在网站的Bootstrap模式(对话框)中使用Unity WebGL应用程序。只要此模式不可见(display:none),控制台日志中始终存在此错误:"Screen position out of view frustum"。 如何处理或避免此错误?

2 个答案:

答案 0 :(得分:3)

我的解决方案的代码非常简单。在Unity中,我编写了一个 C#脚本 ,它将相机作为公共变量mainCamera和两个函数disableCamera()和{{1} }。因为我的WebGL视图在启动时隐藏,我通过调用enableCamera()函数中的disableCamera()来设置相机。只需在Unity编辑器中拖放即可将主摄像头分配到Start()变量。将此脚本拖动到场景中的任何对象。对我来说,对象是一个名为 mainCamera 的画布。

Controller

在我的网站上,我已经加载了Unity WebGL应用程序,并在需要时从 JavaScript 调用函数[Header ("Camera")] public Camera mainCamera; // Use this for initialization void Start () { disableCamera(); } public void disableCamera() { mainCamera.enabled = false; } public void enableCamera() { mainCamera.enabled = true; } 。我的Unity WebGL应用程序加载如下:

enableCamera()

现在,您可以使用 var myApp = UnityLoader.instantiate("myDivContainerID", "pathToUnityBuild.json", etc....); SendMessage)的GameInstance方法调用该功能来激活或停用相机。它可以调用分配给Unity中对象的脚本的功能。在这种情况下,它被称为 myApp

Controller

myApp.SendMessage('Controller','enableCamera'); 接受3个参数,因此您可以根据需要调用带有值的函数。 E.g:

SendMessage

那就是它!

答案 1 :(得分:1)

好的,在我的案例中,我有一个解决这个问题的肮脏解决方案。 我在Unity编写了一个函数来禁用我的主摄像头。因此,每次我使用Unity WebGL(模态或对话框等)隐藏容器时,我将调用此函数来禁用JavaScript中的主摄像头并且错误消失。通过显示容器(模态或对话框等),我只是再次启用相机。不是一个优雅的解决方案,但适合我。但我希望有一个更好的解决方案。