隐藏的 Unity WebGL 应用程序:"Screen position out of view frustum"

Hidden Unity WebGL App: "Screen position out of view frustum"

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

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

我的解决方案的代码非常简单。在 Unity 中,我写了一个 C# 脚本,它将相机作为 public 变量 mainCamera 和两个函数 disableCamera()enableCamera()。由于我的 WebGL 视图在启动时被隐藏,我通过在 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[=44= 调用函数 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');

就是这样!