我需要并排显示两个摄像头显示器。一个人将打开太阳(定向光),一个人将同时渲染同一个场景时关掉太阳。我试图在OnPreRender()方法中使用sun.SetActive(),对于一个Camera我将sun.SetActive(false)和sun.SetActive(true)设置为另一个。它不起作用,两个相机的太阳仍然关闭。如何实现所需的输出?
答案 0 :(得分:2)
对于比Unity 4.6更高版本的版本,您还需要添加OnPreCull。
我为旧版本保留了OnPrerender,你在日志上得到了建议但忽略了它。
将此脚本添加到相机:
function OnPreCull () {
if (sun != null)
sun.enabled = false;
}
function OnPreRender() {
if (sun != null)
sun.enabled = false;
}
function OnPostRender() {
if (sun != null)
sun.enabled = true;
}
答案 1 :(得分:0)
另一种方法是将所有游戏对象复制并设置为不同的层 - 例如:' Sunlit'并且'暗影'复制对象需要嵌套在原始对象中,这可能非常混乱,您需要一个脚本来在运行时复制场景的对象。
层次结构看起来像这样:
你的定向光的剔除面具(在灯光检查员身上)将被设置为除了阴影'上的物体之外的所有物体。层
我不确定这在性能方面是否比joreldraw的解决方案更好或更差。但我猜它会取决于模型的数量和复杂程度。在joreldraw的解决方案中,我们每帧多次启用/禁用lightsource。有了这个解决方案,我们有两倍的游戏对象。如果您的场景中没有很多物体,那么这个解决方案可能会更好。