原文链接:https://jingyan.baidu.com/article/19192ad8081c13e53f57077a.html
-
解决办法1:摄像机的Tag由Main Camera改成Untagged。出现“Screen position out of view frustum (screen pos 256.000000, 0.000000, 15298.202148) (Camera rect 0 0 256 256)”错误提示的时候大多是因为Scence场景切换成了“2D”视图,而Main Camera属于3D 摄像机。但具体原因不明。
-
解决办法2:选中“Scene”标签,右键删除,即关闭当前的Scene窗口。然后通过添加窗口Add Tag-Scene,重新添加Scene标签。
-
解决办法3.检查摄像机的Size(摄像机的Projection选择为Orthographic时,才会有Size)的大小是否设置的太小或者直接就设置成0 了,增大Size可以解决问题;检查摄像机的Clipping Planes 的Near和Far参数,是否设置过小或者设置为0 了。默认值为Near为0.3,Far为1000
-
解决办法4:如果上述的办法已经解决了你的问题,你是幸运的。不过,我是那个不幸的,所以,就有了解决办法4。我的场景中异常提示设计到了Unity5自带的水预制体WaterProDaytime用到的脚本Water。为了解决问题,我开始从这个脚本入手,非常幸运的是我看到了一篇介绍关于WaterProDaytime使用注意事项的文章,上面提到,对于Orthographic相机,如果water在视截体内且water平面与相机视线平行,unity将报出“Screen position out of view frustum”这个error。
-
这是unity自已API的问题,完美的解决只能等官方修正。作者给出了脚本修正的提示,但是没有具体脚本。我的脚本编写能力有限,只能进行相机是否是透视的进行判断,但是可喜可贺,问题依然得到解决,最后一张示意图,展示了我修改后的脚本:添加判断条件
if (!cam.orthographic)
{
refractionCamera.Render();
}
以上如果都不还不行,则可以选择看一下maincamera是否又警告
如果又这个警告,就代表相机有些计算太小了,导致出错,可以对摄像机进行设置
可以把默认的near调整大一下,并且尽量对相机范围进行限定。
注意:同样的代码,再小场景中无bug,改成大场景后,出现问题