隐藏的 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');
就是这样!
我在网站的 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
.
[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');
就是这样!