본문 바로가기

기초코딩강좌/유니티 기초 강좌

10. 씬(Scene)의 개념

반응형

Unity에서 씬(Scene)은 게임이나 애플리케이션의 가상 공간을 나타내는 개념입니다. 씬은 게임의 특정 부분, 레벨, 화면, 혹은 메뉴 등을 포함하며, 게임의 여러 상황을 분리하고 관리할 수 있도록 도와줍니다. 씬은 게임이나 애플리케이션을 구성하는 기본 요소 중 하나로, Unity 에디터에서 시각적으로 디자인하고 편집할 수 있습니다.

여러 씬을 조합하여 전체 게임을 만들 수 있으며, 각 씬은 독립적으로 로드되거나 언로드될 수 있습니다. Unity에서는 SceneManager 클래스를 사용하여 씬을 관리하고 씬 간의 전환을 처리합니다.

주요 특징과 용도:

  1. 게임 레벨 및 화면: 각 씬은 주로 게임의 특정 레벨, 화면, 혹은 상황을 나타냅니다. 예를 들어, 메인 메뉴, 레벨1, 레벨2, 엔딩 등을 각각 다른 씬으로 나눌 수 있습니다.
  2. 씬 전환: 특정 이벤트나 조건이 발생하면 SceneManager 클래스를 사용하여 다른 씬으로 전환할 수 있습니다. 이를 통해 게임 내에서 다양한 상황을 제어할 수 있습니다.
  3. 씬 설정 및 환경: 각 씬은 자체의 렌더링 설정, 라이팅, 카메라 설정 등을 갖고 있어, 다양한 환경을 표현할 수 있습니다.
  4. Hierachy 창: Unity 에디터의 Hierarchy 창에서 현재 열려있는 씬의 게임 오브젝트 구조를 확인하고 편집할 수 있습니다.
  5. 씬 간 통신: 씬 간에 정보를 전달하거나 상태를 공유할 수 있습니다. 이를 통해 특정 씬에서 수행한 작업의 결과를 다른 씬에서 사용할 수 있습니다.
  6. 씬 관리: 여러 씬을 사용하여 작업하면 특정 부분의 수정이나 확장이 편리해지며, 협업이나 유지보수에 용이합니다.

씬은 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)의 관계:

  1. 뷰포트(Viewport):
    • 정규화된 좌표 시스템을 사용하여 0에서 1 사이의 값을 가지는 사각형 영역입니다.
    • 뷰포트의 왼쪽 하단이 (0, 0)이고, 오른쪽 상단이 (1, 1)입니다.
    • 카메라는 뷰포트를 통해 렌더링될 화면 영역을 결정합니다.
  2. 카메라(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에서 시각화와 렌더링을 제어하는 중요한 개념이며, 다양한 게임 및 애플리케이션 개발 시 유용하게 활용됩니다.

728x90
반응형

'기초코딩강좌 > 유니티 기초 강좌' 카테고리의 다른 글

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