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

标签 unity-game-engine unity-webgl frustum

我正在网站的 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/

相关文章:

android - 在Unity中,如何构建和播放WebGL项目并在Android设备上播放?

3d - 在 Three.Js 中使物体完全适合相机视锥

java - 确定地球平截头体的可见面积

opengl-es - 无法在 OpenGL 中的 2D(正交)之上绘制 3D(视锥体)

c# - 如何为推送通知解码 Unity 的 iOS 设备 token ?

c# - 我如何更改迷宫生成部分,以便迷宫位于地形 X、Z 而不是 Y 上?

javascript - 如何使放置在简单 html 页面上的 Unity WebGL 应用程序异步加载?

android - Google Play Games y GoogleMobileAds 不能在 Unity 5 中协同工作

Unity 3D 中的相机视锥体平面

c# - 从 sendMessage 返回值或在 unity webgl 中交替