2017-12-26 15 views
1

2 개의 카메라 디스플레이를 나란히 표시해야합니다. 하나는 태양 (방향성 조명)을 켜고 같은 장면을 동시에 렌더링하는 동안 태양은 꺼집니다. OnPreRender() 메서드 내에서 sun.SetActive() 메서드를 사용하려고했습니다. 하나의 카메라에 대해 sun.SetActive (false) 및 sun.SetActive (true)를 설정했습니다. 그것은 작동하지 않는다, 태양은 두 카메라 다 꺼져있다. 원하는 출력을 얻으려면 어떻게해야합니까?유니티 3D : 한 카메라에서는 방향 표시등을 켜고 다른 카메라에서는 방향 표시등을 켤 수 있습니까?

+0

두 개체가 동일한 스크립트 구성 요소를 공유합니까? 그들이 실제로 같은 가치로 설정되어 있는지 궁금해. 또는 태그를 사용하여 태그를 분리하고 있습니까? – Brien

+0

아니요 태양 (방향성 조명) 개체를 제어하는 ​​별도의 스크립트를 사용하고 있습니다. 두 개의 카메라에 대한 두 개의 별도 스크립트. 내가 성취하고자하는 것은 한 카메라에서는 햇볕이 잘 드는 디스플레이이고 다른 카메라에서는 태양이 들지 않는 디스플레이입니다. 이 두 디스플레이는 동시에 한 렌더링을 보여 주므로 한 디스플레이에서 태양의 효과를 볼 수 있고 비교를 위해 다른 디스플레이에서 태양이없는 결과를 볼 수 있습니다. –

+0

어이 해결책을 찾았 어. 그것은 효과가 있었다. OnPreRender()가 정상적으로 작동했습니다. 답변 주셔서 감사합니다 :) –

답변

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; 
} 
0

모든 게임 오브젝트를 복제하고 다른 레이어로 설정하는 것이 작업을 수행하는 또 다른 방법 - '숨겨진 된'햇볕에 쬐 '과 : 예컨대합니다. 중복 객체는 원본 객체 내에 중첩되어야하므로 상당히 복잡 할 수 있습니다. 런타임에 장면의 객체를 복제하는 스크립트가 필요합니다.

계층 구조는 다음과 같이 보일 것입니다 : (빛의 관리자에)

enter image description here

귀하의 방향성 빛의 컬링 마스크는 '숨겨진 된'레이어의 객체를 제외한 모든 설정 될 것이다.

다음이 카메라 레이어 중 하나를 제외하고 도태 모든 : enter image description here

이 성능면에서 joreldraw의 솔루션보다 더 좋거나 더 나쁜 경우 내가 확실 해요. 그러나 나는 그것이 모델의 양과 복잡성에 달려 있다고 생각할 것입니다. joreldraw의 솔루션에서 프레임 당 광원을 여러 번 활성화/비활성화합니다. 이 솔루션을 사용하면 두 가지 게임 객체를 사용할 수 있습니다. 장면에 많은 물체가 없으면 아마도이 솔루션이 더 좋을 것입니다.

관련 문제