레이어
우리가 흔히 디자인 툴에서 접할수 있는 레이이는 층이라는 의미를 같는다.
이 레이어는 오프라인에서 한장의 종이에 그림을 그리는 것이 아닌 같은 사이즈의 투명한 종이 여러장에 그림을 그린 후 겹쳐 하나의 그림으로 취급하는 것이라고 생각하면 된다.
여기서 중요한 것은 여러장의 그림을 하나로 겹친다라고 하는 것이다.
유니티는 이러한 레이어 방식을 사용하여 화면을 랜더링한다.
유니티의 레이어
유니티의 씬에 존재하는 게임오브젝트들은 기본적으로 Default레이어에 배치된다.

추가로 UI가 그려지는 canvas를 만들어보자.

canvas오브젝트를 보면 UI라는 레이어에서 만들어 졌음을 알 수 있다.
빈 오브젝트를 만들고 레이어를 클릭해보자.

다양한 레이어가 존재하며 필요하다면 Add Layer를 통해 사용자의 입맛에 맞는 레이어를 만들수도 있다.
다중 카메라
유니티에서는 다양한 카메라 옵션을 지원할 뿐 아니라 여러대의 카메라을 이용할 수도 있다.
카메라의 옵션을 살펴보면 Culling Mask라는 옵션이 있다.

해당 옵션을 클릭하면 내가 현재 만들어 놓은 레이어와 같은 옵션이 나오는 것을 확인 할 수 있다.


여기서 눈치빠른 사람은 알것이다.
Culling Mask라는 옵션은 카메라가 랜더링할 레이어를 선택할 수 있다.
자 여기서 이런 옵션을 어디다 사용해야 할까?
자주하는 게임을 생각해보자. 게임을 하다보면 UI숨기기 이펙트 숨기기등 한번에 게임요소를 없애는 기능들이 있다.
이런 기능에서 없애는 요소를 각자 전용 카메라에 랜더링 한다고 가정해 보자 그러면 해당 카메라를 비활성화 시키면 해당 요소는 보이지 않게 될것이다.
다중 카메라 구현
일반적인 다중 카메라 구현에는 큰 전제조건이 있다.
그것은 모든 카메라의 위치가 같아야 한다 라는 것이다.
레이어를 랜더링 하는 카메라는 결국 하나의 종이라고 봐도 무방하다. 이런한 종이를 여러겹을 겹쳐 그림을 완성 하려는데 중간의 종이가 반쯤 빠져 나왔다고 생각해 보자 그러면 하나의 그림으로 완성하였을때 빠져나온 부분때문에 그림의 이상할 것이다.카메라도 마찬가지이다. 하나의 씬를 구성하는데 각각의 카메라의 위치가 다르면 엉망진창의 배치로 보일 것이다.
그러니 카메라의 위치는 항상 각별히 신경쓰도록 하자.
일반적인 구현은 매우 쉽다.
0. 레이어 설계
- 몬스터 > Default레이어
- UI > UI레이어
- 이펙트 > Fx레이어
주인장은 위와 같이 레이어를 사용할 것이다.
1. 원하는 레이어를 만든다.

빈공간에 원하는 레이어를 만든다. >> 주인장의 미리 Fx라는 레이어를 만들었다.
2. 게임 오브젝트 배치


메인카메라와 몬스터의 레이어를 Default로 배치한다. -> 몬스터는 메인카메라에서만 랜더링한다.
3. UI Camera 만들기
우선 카메라를 하나 만들어 메인카메라와 동일한 위치에 배치후 이름을 UI Camera로 변경해준다.


4. UI Canvas만들기 + 이미지 추가
Canvas를 만들고 이름을 UI Canvas로 변경하자


캔버스가 그려지는 레이어를 확인하면 UI로 설정되어 있는 것을 확인할 수 있다.
이처럼 유니티에서는 기본적으로 제공하는, 변경이 불가능한 레이어들이 있다.
캔버스에 이미지 추가


주인장은 HP게이지를 추가하였다.
★중간 점검★
여기 까지 추가하였으면 씬 뷰와 게임 뷰를 확인해 보자



각 뷰를 확인하면 씬뷰에서는 게임 오브젝트와 UI가 각자 독립된 공간에서 그려진후 게임 뷰 즉 게임플레이시 Canvas가 위로 겹쳐저 그려지게 되는 것을 확인 할 수 있다.
확인이 끝났으니 이제 다음으로 진행하자.
5. UI Carmera 레이어 변경하기
UI Carmera의 레이어를 Default > UI 레이어로 변경

6. Canvas Setting
- Canvas의 Inspector창에서 Render Mode를 Screen Space - Camera로 변경해준다.
- 변경시 하단의 옵션이 변한다. 이옵션중에서 Render Camera에 UI Camera를 넣어준다.

7. 카메라 셋팅 변경 - 레이어 분할
이제 모든것을 Main Camera에서 랜더더링 하는 레이어를 분할할 차례이다.


위 사진처럼 Culling Mask를 UI 카메라 >> UI / Main Camera >> UI를 제외로 변경해 주자
8. Camera 랜더링 영역지정
UI카메라에서 Clear Flags > Depth only로 변경해주자


Depth Only란?

즉 쉽게 말하면 해당 카메라가 비추고 있는 레이어의 오브젝트를 제외한 나머지는 공백으로 취급된다.
다른 옵션을 알고 싶다면 링크로 들어가 읽어보는 것을 추천한다.
9. UI Camera Depth 설정

간단하게 말하면 카메라 끼리의 레이어 설정이다.
Unity에서 카메라를 설정하면 기본적으로 카메라의 Depth는 -1생성된다.

UI는 제일 위에 그려져야 하니 Main camera의Depth보다 큰 1로 설정하자

★UI 결과★
자 이제 다시 씬과 게임 뷰를 확인해 보자.


그럼 위 사진처럼 보일것이다.
여기서 주목할 점은 씬뷰이다.
중간점검때 확인한 뷰를 떠올려 보자 Main Camera와 UI Canvas가 별개의 공간에 그려졌다. 그러나 지금은 2개의 공간이 하나의 화면에 공존하고 있는 모습을 볼수 있다.
이는 결국 UI를 보여주는 카메라와 Main 카메라의 위치를 동일하게 배치하여 겹치게 한것이다.
이제 Fx레이어도 완성해 보자
10. Fx 배치 - 레이어 변경

주인장은 별이 3개 나오는 Fx를 배치하였다.
11. Fx Camera 만들기

※다중카메라 사용시 주의점※
카메라를 생성하면 Audio Listener라는 컴포넌트가 붙어서 생성된다.
이 컴포넌트는 사람으로 보면 귀에 해당하는 컴포넌트다. 그러나 지금 우리가 만드는 카메라들은 듣기라는 기능이 필요가 없는 카메라들 이다. 그러니 Main Camera를 제외한 모든 카메라에서 해당 컴포넌트를 지워주자.
12. Fx Camera 레이어 및 Depth변경
Fx Camera의 Depth는 UI Camera보다 작고 Mian Camera보다 크게 설정하여 UI위에 그려지지 않게 하였다.


Main Camera의 마스크설정에서 Fx레이어를 해제해 주었다.
★결과★
이제 영상에서처럼 각 카메라를 활성화 / 비활성화 하는 것으로 해당 요소가 게임 씬에서 사라지고 나타나는 것을 확인할 수 있다.
이로써 다중 카메라 구현이 끝났다.
'GameDevelopment(개임개발) > Unity_KeyWord' 카테고리의 다른 글
| Universal 3D와 High Definition 3D의 차이점(Source.ChatGPT) (0) | 2025.03.11 |
|---|---|
| Unity_Interface (인터페이스) (2) | 2024.03.12 |
| Unity_TileMap (0) | 2024.03.07 |
| Input.GetAxis / GetAxisRaw (입력한 방향 받아오기) (0) | 2024.02.27 |
| Unity Script File Naming(유니티 스크립트 이름 명명하기) (0) | 2024.02.27 |