Unity에서 씬(Scene)은 게임이나 애플리케이션의 가상 공간을 나타내는 개념입니다. 씬은 게임의 특정 부분, 레벨, 화면, 혹은 메뉴 등을 포함하며, 게임의 여러 상황을 분리하고 관리할 수 있도록 도와줍니다. 씬은 게임이나 애플리케이션을 구성하는 기본 요소 중 하나로, Unity 에디터에서 시각적으로 디자인하고 편집할 수 있습니다.
여러 씬을 조합하여 전체 게임을 만들 수 있으며, 각 씬은 독립적으로 로드되거나 언로드될 수 있습니다. Unity에서는 SceneManager 클래스를 사용하여 씬을 관리하고 씬 간의 전환을 처리합니다.
주요 특징과 용도:
- 게임 레벨 및 화면: 각 씬은 주로 게임의 특정 레벨, 화면, 혹은 상황을 나타냅니다. 예를 들어, 메인 메뉴, 레벨1, 레벨2, 엔딩 등을 각각 다른 씬으로 나눌 수 있습니다.
- 씬 전환: 특정 이벤트나 조건이 발생하면 SceneManager 클래스를 사용하여 다른 씬으로 전환할 수 있습니다. 이를 통해 게임 내에서 다양한 상황을 제어할 수 있습니다.
- 씬 설정 및 환경: 각 씬은 자체의 렌더링 설정, 라이팅, 카메라 설정 등을 갖고 있어, 다양한 환경을 표현할 수 있습니다.
- Hierachy 창: Unity 에디터의 Hierarchy 창에서 현재 열려있는 씬의 게임 오브젝트 구조를 확인하고 편집할 수 있습니다.
- 씬 간 통신: 씬 간에 정보를 전달하거나 상태를 공유할 수 있습니다. 이를 통해 특정 씬에서 수행한 작업의 결과를 다른 씬에서 사용할 수 있습니다.
- 씬 관리: 여러 씬을 사용하여 작업하면 특정 부분의 수정이나 확장이 편리해지며, 협업이나 유지보수에 용이합니다.
씬은 Unity에서 게임 및 시뮬레이션을 개발할 때 중요한 구성 요소이며, Unity의 다양한 기능과 도구를 사용하여 씬을 시각적으로 디자인하고 구성할 수 있습니다.
씬(Scene) 관리
Unity에서 씬 관리는 게임의 여러 부분을 조직하고 전환하는 데 사용되는 핵심 기능 중 하나입니다. 씬 관리를 위해 SceneManager 클래스를 사용할 수 있으며, 이 클래스는 여러 가지 유용한 함수들을 제공합니다.
씬 로드와 전환:
1. 씬 로드하기:
using UnityEngine.SceneManagement;
// 씬 이름을 사용하여 씬 로드
SceneManager.LoadScene("Level1");
// 씬 인덱스를 사용하여 씬 로드
SceneManager.LoadScene(1);
2. 씬 전환하기:
// 현재 씬을 얻어온 후 다음 씬으로 전환
Scene currentScene = SceneManager.GetActiveScene();
SceneManager.LoadScene(currentScene.buildIndex + 1);
씬 언로드:
// 특정 씬 언로드
SceneManager.UnloadScene("Level1");
씬 정보 얻기:
// 현재 씬의 정보 얻기
Scene currentScene = SceneManager.GetActiveScene();
Debug.Log("현재 씬 이름: " + currentScene.name);
Debug.Log("현재 씬 인덱스: " + currentScene.buildIndex);
씬 관리 팁:
- Build Settings 설정: 사용할 씬은 Build Settings에서 미리 설정되어 있어야 합니다. File > Build Settings에서 씬을 추가하고 순서를 정의할 수 있습니다.
- 씬 전환 시 데이터 전달: SceneManager.LoadScene 함수의 두 번째 매개변수로 LoadSceneMode를 사용하여 씬 전환 시 데이터를 유지할 수 있습니다.
// 데이터 전달 예제
public static string playerName;
// 현재 씬에서 다음 씬으로 데이터 전달
playerName = "John";
SceneManager.LoadScene("NextScene", LoadSceneMode.Single);
- 씬 관련 이벤트: SceneManager 클래스는 씬과 관련된 이벤트를 제공합니다. SceneManager.sceneLoaded 등의 이벤트를 활용하여 특정 작업을 수행할 수 있습니다.
Unity의 씬 관리 기능을 통해 게임의 흐름을 효과적으로 제어하고, 다양한 상황에 대응할 수 있습니다.
뷰포트와 카메라
뷰포트(Viewport)는 카메라에 의해 렌더링되는 영역을 나타내는 개념입니다. 뷰포트는 일반적으로 0에서 1 사이의 정규화된 좌표 시스템으로 표현되며, 이를 통해 카메라가 화면을 어떻게 렌더링할지 조절할 수 있습니다.
카메라(Camera)는 게임 오브젝트의 시점에서 세계를 보는 시점을 나타냅니다. Unity에서는 게임 화면을 렌더링하는 데 사용되는 주된 시각화 도구입니다.
뷰포트(Viewport)와 카메라(Camera)의 관계:
- 뷰포트(Viewport):
- 정규화된 좌표 시스템을 사용하여 0에서 1 사이의 값을 가지는 사각형 영역입니다.
- 뷰포트의 왼쪽 하단이 (0, 0)이고, 오른쪽 상단이 (1, 1)입니다.
- 카메라는 뷰포트를 통해 렌더링될 화면 영역을 결정합니다.
- 카메라(Camera):
- 게임 오브젝트의 시점에서 세계를 보는 시점을 나타냅니다.
- 카메라는 뷰포트의 위치와 크기를 조절하여 렌더링될 영역을 결정합니다.
- Unity의 카메라는 여러 설정을 갖추고 있어, 뷰포트 설정, 투영 방식, 클리핑 플레인 등을 조절하여 다양한 시각화 효과를 구현할 수 있습니다.
뷰포트 설정:
Unity에서는 카메라의 뷰포트를 직접 설정할 수 있습니다. 아래는 간단한 예제 코드입니다:
void Start()
{
// 카메라의 뷰포트 설정
Camera.main.rect = new Rect(0.2f, 0.2f, 0.6f, 0.6f);
}
위 코드에서는 Camera.main.rect를 사용하여 카메라의 뷰포트를 설정하고 있습니다. Rect는 왼쪽 하단의 x, y 좌표와 너비, 높이를 나타냅니다.
뷰포트와 카메라는 Unity에서 시각화와 렌더링을 제어하는 중요한 개념이며, 다양한 게임 및 애플리케이션 개발 시 유용하게 활용됩니다.
'기초코딩강좌 > 유니티 기초 강좌' 카테고리의 다른 글
12. 리지드바디와 콜라이더 (1) | 2024.01.01 |
---|---|
11. 프리팹 소개 (0) | 2023.12.31 |
9. 주요 함수와 이벤트 (0) | 2023.12.29 |
8. 스크립트 생성과 연결 (0) | 2023.12.28 |
7. 변수와 자료형 (1) | 2023.12.27 |