我正在网站的 Bootstrap 模式(对话框)中使用 Unity WebGL 应用程序。只要此模式不可见 (display:none
),控制台日志中就会始终出现此错误:“屏幕位置超出视锥体”
。
我该如何处理或避免此错误?
最佳答案
我的解决方案的代码非常简单。在 Unity 中,我编写了一个 C# 脚本,它将相机作为公共(public)变量 mainCamera
和两个函数 disableCamera()
> 和enableCamera()
。由于我的 WebGL View 在启动时隐藏,因此我通过在 Start()
函数中调用 disableCamera()
来设置相机。只需在 Unity 编辑器中拖放即可将主相机分配给 mainCamera
变量。将此脚本拖动到场景中的任何对象。对我来说,该对象是一个名为 Controller
的 Canvas。
[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 应用程序,并在需要时从 JavaScript 调用函数 enableCamera()
。我的 Unity WebGL 应用程序是这样加载的:
var myApp = UnityLoader.instantiate("myDivContainerID", "pathToUnityBuild.json", etc....);
现在,您可以使用 GameInstance
(myApp
) 的 SendMessage
方法调用该函数来激活或停用相机。它可以调用分配给 Unity 中对象的脚本函数。在本例中,它称为 Controller
:
myApp.SendMessage('Controller','enableCamera');
SendMessage
接受 3 个参数,因此您可以根据需要调用带有值的函数。例如:
myApp.SendMessage('Controller','enableCamera', 'true');
就是这样!
关于unity-game-engine - 隐藏的Unity WebGL应用程序: "Screen position out of view frustum",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49335738/