Unity 6000.1.6f1
URP
----
URP를 사용해보려 하니 Camera 제어 방식이 BIRP와는 달라서 Camera를 어떻게 관리해야 할지 고민이었다.
나는 기본적으로 Scene 별로 분리하고 Scene마다 Camera를 따로 관리하는 편인데,
URP에서는 Base Camera를 1개 두고 나머지를 Overlay Camera로 둬서 Base Camera의 CameraStack에 추가해서 사용해야 한단다.
Overlay들의 렌더링 순서도 CameraStack List의 등록 순서라서 Sort를 해서 해결해야 될 듯하고..
그래서 이리저리 인터넷 뒤져보다보니 아래 링크의 github 소스가 나의 기존 BIRP Camera 사용방식에 적용가능 할 것 같아서 가져와서 조금 수정해봤다. (do-won-kim님 감사합니다.)
[참조] https://github.com/do-won-kim/CameraStack
GitHub - do-won-kim/CameraStack
Contribute to do-won-kim/CameraStack development by creating an account on GitHub.
github.com
일단 기존 BIRP의 카메라 제어 방식을 유지하기 위해 고민을 해보다보니,
CameraStack 등록용으로 새로운 Base Camera를 하나 추가하고, 나머지를 모두 Overlay로 해서 depth만 잘 관리하면 BIRP랑 구조가 같게 될 것 같다.
결과적으로 URP에서는 Base Camera 하나 더 추가하면 될 듯 하다.
그래서 구조를 아래와 같이 잡았다.
1) CameraStackManagerSGT(GameObject) 프리팹 생성 및 Main Scene(최초 생성 및 파괴되지 않는 Scene)에 올리기
└ Camera (GameObject)
└ Render Type : Base
└ Projection : Othographic
└ Culling Mask : Nothing
└ CameraStackController(Component)
└ fDepth : -1(Base 1개만 쓰기 때문에 현재 생각으로는 의미없어서 초기값)
└ bIsBaseCamera - Check
2) 나머지 Camera에 CameraStackController(Component) 추가
└ Render Type : Overlay
└ Projection : 상황에 맞게
└ Culling Mask : 상황에 맞게
└ CameraStackController(Component)
└ fDepth : BIRP의 Camera Depth와 같게 제어(숫자가 높을수록 위에 그려짐)
└ bIsBaseCamera : UnCheck
CameraStackManagerSGT.cs와 CameraStackController.cs 소스 및 프리팹은 아래 첨부 파일 참조
CameraStackManagerSGT.cs
0.01MB
CameraStackController.cs
0.00MB
CameraStackManager.prefab
0.00MB
[결론]
위와 같은 카메라 관리 방식으로 하면 카메라 구조가 바뀌지 않아서 BIRP <-> URP 상호 변환 하더라도 구조적인 변경 없이 편하게 적용 용 할 수 있을 것 같다.
결국 BIRP -> URP로 갈 때는 카메라 한 대가 더 추가될 뿐이다.