늘 유니티를 하며 헷갈렸던 부분 중 하나.
게임 오브젝트는 인게임 요소고, 텍스트는 캔버스 요소라 둘은 완전 다른 위치에 있는데,
만약 텍스트를 게임 오브젝트 요소처럼 쓰고 싶다면 어떻게 해야할까?

결론부터 말하면 Canvas의 Render Mode를 - World Space로 변형해주면 된다
그럼 도대체 이 World Space모드가 무엇이고, 다른 모드는 무엇이 있는지 정리해보도록 하자
🔹 1. Screen Space - Overlay (기본값)
📌 UI가 항상 화면의 맨 위에 그려지는 모드
- 카메라에 상관없이 화면 픽셀 좌표에 고정
- 가장 성능이 좋음 (UI 전용 렌더링 패스 X)
- 멀티캠 지원 X (항상 게임 화면 위에 고정)
🔹 특징
✅ UI가 항상 화면 크기에 맞게 유지됨
✅ 카메라 거리와 상관없이 항상 같은 크기
✅ 가장 성능이 좋음 (추가적인 카메라 연산 필요 없음)
🔹 사용 예시
- 고정된 HUD (체력바, 미니맵, 버튼 등)
🔹 설정 방법
- Canvas 오브젝트 선택
- Inspector → Render Mode → "Screen Space - Overlay" 선택
🔹 2. Screen Space - Camera
📌 UI를 특정 카메라에 종속시켜 3D 공간처럼 보이게 하는 모드
- UI가 특정 카메라의 시야 안에서 렌더링됨
- UI는 카메라의 원근법(FOV) 영향을 받을 수 있음
- 멀티캠 지원 가능 (다른 카메라에 따라 다르게 표시 가능)
🔹 특징
✅ UI가 카메라의 원근감 영향을 받을 수 있음
✅ 3D 오브젝트와 자연스럽게 섞이는 UI 제작 가능
❌ 성능이 Overlay보다 약간 낮음 (카메라가 UI를 렌더링해야 함)
🔹 사용 예시
- 게임 내 UI (예: 3D 캐릭터 위 HP 바)
- 3D 월드 공간에 배치되는 UI (예: VR UI, HUD 요소)
🔹 설정 방법
- Canvas 오브젝트 선택
- Inspector → Render Mode → "Screen Space - Camera" 선택
- Render Camera에 원하는 카메라 할당
🔹 3. World Space
📌 UI가 3D 오브젝트처럼 동작하는 모드 (월드 좌표계에서 움직임)
- 일반적인 3D 오브젝트처럼 위치, 회전, 크기 조절 가능
- UI를 게임 내 특정 오브젝트에 부착할 때 유용
🔹 특징
✅ UI가 3D 오브젝트처럼 씬 안에서 이동 가능
✅ 캐릭터나 사물 위에 UI를 직접 배치 가능
❌ 픽셀 단위가 아니라 크기 조절이 필요함
❌ 성능이 가장 낮을 수 있음 (3D 오브젝트처럼 처리됨)
🔹 사용 예시
- NPC 머리 위의 이름표
- 3D 게임 내 인터랙티브 UI (예: 상점, NPC 대화창)
- VR, AR UI 요소
🔹 설정 방법
- Canvas 오브젝트 선택
- Inspector → Render Mode → "World Space" 선택
- Canvas의 RectTransform을 조절하여 적절한 크기 및 위치 설정
만약 원하는게 위에 쓴것처럼 텍스트나 캔버스 요소를 2/3D 오브젝트처럼 씬 안에서 이동하고 싶다면
World Space를 설정한뒤 캔버스의 RectTransform을 게임화면에 맞춰 적절한 크기와 위치로 이동시키면 된다

예를 들어 이런 식인거다. 프리팹 밑에 캔버스를 만들고 그 밑에 텍스트 파일을 만들어준다


그리고 캔버스에서는 Render Mode를 World Space, 크기는 게임화면 사이즈에 맞춰
0.01로 전부 대폭 줄여주었다
오른쪽 텍스트 파일은 위치는 0,0,0에서 프리팹 살짝 위로 가도록 y축만 살짝 올려주었다

그럼 결과적으로 게임화면 안에 이렇게 게임 오브젝트처럼 캔버스가 위치하게 되는것이다
'유니티 > 유니티 관련 용어' 카테고리의 다른 글
싱글톤 (Singleton Pattern) (1) | 2024.04.26 |
---|---|
Vector3.Reflect (0) | 2024.03.19 |
Collision.Contact[] (0) | 2024.03.19 |
글로벌 좌표 / 로컬 좌표 / Transform.Translate (0) | 2024.03.12 |
Shader, Rendering Pipeline (0) | 2024.02.18 |