我在网站的Bootstrap模式(对话框)中使用Unity WebGL应用程序。只要此模式不可见(display:none
),控制台日志中始终存在此错误:"Screen position out of view frustum"
。
如何处理或避免此错误?
答案 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中的主摄像头并且错误消失。通过显示容器(模态或对话框等),我只是再次启用相机。不是一个优雅的解决方案,但适合我。但我希望有一个更好的解决方案。