TECHARTNOMAD | TECHARTFLOWIO.COM

UNITY3D

Scene Templates 좀 알아보자.

jplee 2025. 2. 5. 22:30
저녁 시간에는 주로 유니티로 MMO 를 개발하는 회사를 컨설팅 하고 있는 터라 스트리밍 터레인 예제를 제작해야 하는데 뭐 문서 보다가 씬템플릿이 있길레 뭔가 하고 해서 유니티 문서 기반으로 정리 해 본것이다.

Scene Templates

새로운 씬을 만들기 위해 Unity는 Scene Template(시작하고자 하는 모든 콘텐츠가 포함된 사전 구성된 씬)을 복사한다. 예를 들어, 기본 템플릿에는 카메라와 라이트가 포함되어 있다.

프로젝트에서 사용 가능한 새로운 씬의 유형을 정의하기 위해 사용자 정의 Scene Template을 만들 수 있다. 예를 들어, 서로 다른 게임 레벨에 대한 템플릿을 만들어 팀원들이 올바른 에셋과 구성으로 씬을 시작할 수 있도록 할 수 있다.

모든 Unity 씬은 Scene Template이 될 수 있으며, 이를 통해 무제한으로 새로운 씬을 만들 수 있다. 씬과 마찬가지로 대부분의 Scene Template은 프로젝트 에셋으로 저장된다.

이 페이지에서는 중요한 Scene Template 개념을 설명한다. Scene Template 생성, 편집 및 관리에 대한 자세한 내용은 다음 페이지를 참조하라:

  • Scene Template 생성: Scene Template을 만드는 다양한 방법을 설명한다.
  • Scene Template 편집: Scene Template 속성을 편집하는 방법을 설명한다.
  • 새로운 씬 생성 사용자 정의: Unity가 Scene Template에서 씬을 생성할 때 실행할 사용자 정의 코드를 첨부하는 방법을 설명한다.
  • Scene Template 설정: Scene Template의 프로젝트 설정을 설명한다. 대부분의 설정은 템플릿에서 새 씬을 만들 때 Unity가 씬 종속성을 처리하는 방법을 제어한다.

중요 개념

내장 템플릿과 사용자 정의 템플릿

대부분의 Scene Template은 사용자가 자신의 씬에서 만드는 사용자 정의 템플릿이다. 이러한 템플릿은 프로젝트 에셋으로 저장된다.

Unity는 또한 각 프로젝트 유형에 대한 내장 템플릿을 제공한다. 예를 들어, 일부 프로젝트에는 기본 템플릿(카메라와 라이트가 있는 씬 생성)과 빈 템플릿(빈 씬 생성)이 포함되어 있다.

내장 템플릿은 프로젝트 에셋으로 저장되지 않고 수정할 수 없다는 점에서 다른 템플릿과 다르다.

참고:일부 Unity 패키지는 설치 시 추가 Scene Template을 포함할 수 있다.

템플릿과 씬 종속성

Scene Template을 만들 때 새 씬을 만들 때 Unity가 종속성(포함된 에셋)을 복제할지 또는 참조할지 선택할 수 있다.

특정 템플릿에 대해 Unity가 복제할 에셋을 지정하려면 템플릿의 속성을 편집하라.

일반적인 템플릿에는 복제된 에셋과 참조된 에셋이 모두 포함된다. Unity는 기본적으로 여러 에셋 유형을 복제한다.

에셋 유형에 대한 기본 복제 동작을 수정하려면 Scene Template 프로젝트 설정을 편집하라.

템플릿 에셋 복제

복제된 에셋은 템플릿 씬의 원본 에셋 복사본이다. 새 씬을 만들 때 Unity는 자동으로 이러한 복제된 에셋을 사용하도록 구성한다. 복제된 에셋을 변경해도 템플릿 씬에 영향을 미치지 않으며, 템플릿의 원본 에셋을 변경해도 새 씬에 영향을 미치지 않는다.

템플릿 에셋 복제는 사용자가 수정할 수 있는 에셋으로 새 씬을 시작하고자 할 때 가장 적합하다.

템플릿 에셋 참조

참조된 에셋은 템플릿 씬의 원본 에셋이다. Unity가 새 씬을 만들 때 이러한 동일한 에셋에 연결된다. 참조된 에셋을 변경하면 새 씬과 템플릿 씬 모두에 영향을 미친다.

템플릿 에셋 참조는 사용자가 수정하지 않고 기본 에셋 세트를 기반으로 구축하려는 새 씬을 포함하고자 할 때 가장 적합하다.

Scene Templates 생성

새로운 Scene Templates은 다음과 같은 방법으로 생성할 수 있다:

  • 빈 템플릿으로 시작하기
  • 기존 씬 에셋으로부터 Scene Templates 생성하기
  • 현재 씬으로부터 Scene Templates 생성하기

Scene Templates을 생성한 후에는 속성을 편집하거나 새로운 씬을 생성할 수 있다.

팁: 씬으로부터 Scene Templates을 생성하기 전에, 씬과 동일한 이름의 폴더를 만들고 복제하고자 하는 모든 에셋을 그 안에 배치하라. Scene Templates을 생성할 때, Unity는 자동으로 해당 에셋들에 대한 복제속성을 활성화한다. 자세한 내용은 Scene Templates 편집을 참조하라.

 

빈 Scene Templates 생성

빈 Scene Templates을 생성하고 나중에 구성할 수 있다. 빈 템플릿은 씬 에셋과 연결하기 위해 속성을 편집하기 전까지는 새 씬 대화상자에 나타나지 않는다.

현재 프로젝트 폴더에 빈 Scene Templates을 생성하려면:

  • 메뉴에서 Assets > Create > Scene Templates을 선택한다.

특정 프로젝트 폴더에 빈 Scene Templates을 생성하려면:

  1. 다음 중 하나를 수행한다:
  2. Project 창에서 폴더를 마우스 우클릭하여 컨텍스트 메뉴를 연다.
  3. Project 창에서 폴더를 열고, 에셋 창을 마우스 우클릭하여 컨텍스트 메뉴를 연다.
  4. Create > Scene Templates을 선택한다.

기존 Scene Asset으로부터 Scene Templates 생성

모든 기존 씬을 Scene Templates으로 만들 수 있다. 기존 씬으로부터 Scene Templates을 생성한 후에는 새로운 씬을 생성할 때 Unity가 복제해야 할 종속성을 지정하기 위해 속성을 편집할 수 있다.

기존 씬 에셋으로부터 Scene Templates을 생성하려면 Project 창을 열고 다음 중 하나를 수행한다:

  • 씬 에셋을 마우스 우클릭하고 컨텍스트 메뉴에서 Create > Scene Templates From Scene을 선택한다.
  • 씬 에셋을 선택하고 메인 메뉴에서 Assets > Create > Scene Templates From Scene을 선택한다.

현재 씬으로부터 Scene Templates 생성

현재 씬으로부터 Scene Templates을 생성하려면 메뉴에서 File > Save As Scene Templates을 선택한다.

저장하지 않은 변경사항이 있는 경우, Unity는 Scene Templates을 저장하기 전에 씬을 저장하라는 메시지를 표시한다.

현재 씬으로부터 Scene Templates을 생성한 후에는 새로운 씬을 생성할 때 Unity가 복제해야 할 종속성을 지정하기 위해 속성을 편집할 수 있다.

C# 스크립트로 Scene Templates 생성

C# 스크립트에서 Scene Templates을 생성할 수 있다.

빈 Scene Templates을 생성하려면 CreateSceneTemplate 메서드를 사용한다.

Scene Templates 편집

Scene Templates을 편집하려면 Project 창에서 선택하고 Inspector 창에서 연다.

참고:
처음 빈 Scene Templates 을 만들 때는 속성을 편집하고 씬과 연결해야 사용할 수 있습니다. 활성 씬이나 기존 씬 에셋에서 만든 템플릿은 일부 속성이 기본적으로 설정되어 있다.

 

Scene Templates Inspector

Scene Templates Inspector에는 다음과 같은 섹션이 포함되어 있다:

  1. 세부 정보: 템플릿의 씬을 지정하고 새 씬 대화상자에 표시될 템플릿 설명을 포함한다.
  2. 썸네일: 템플릿 미리보기 이미지를 만들기 위한 옵션을 제공한다.
  3. Scene Templates 파이프라인: Unity가 템플릿에서 새 씬을 만들 때 실행할 선택적 커스텀 스크립트를 지정한다.
  4. 종속성: 템플릿 씬의 종속성을 나열하고 새 씬을 만들 때 Unity가 복제할 항목을 지정한다.

세부 정보

세부 정보 섹션을 사용하여 템플릿으로 사용할 씬을 지정하고 새 씬 대화상자에 표시되는 방식을 제어한다.

속성: 설명:

템플릿 씬 템플릿으로 사용할 씬을 지정합니다. 프로젝트의 모든 씬을 사용할 수 있습니다.
제목 새 씬 대화상자에 표시되는 템플릿 이름입니다.
설명 새 씬 대화상자에 표시되는 템플릿 설명입니다.
새 씬 대화상자에 고정 이 템플릿을 새 씬 대화상자에 고정할지 여부를 제어합니다. 고정된 템플릿은 항상프로젝트의 Scene Templates목록 상단에 표시됩니다.

썸네일

썸네일 섹션은 새 씬 대화상자에 표시되는 미리보기 이미지를 만들기 위한 옵션을 제공한다.

속성: 설명:

텍스처   썸네일로 사용할 텍스처 에셋을 지정합니다. 프로젝트의 모든 텍스처 에셋을 사용할 수 있습니다. 지정하지 않으면 템플릿은 기본 Scene Templates 에셋 아이콘을 사용합니다.
[썸네일 미리보기]   템플릿의 썸네일 텍스처가 있는 경우 표시합니다.
스냅샷   썸네일 이미지를 캡처하기 위한 옵션을 제공합니다.
  메인 카메라뷰 또는게임 뷰를 캡처할지 지정합니다.
  스냅샷 찍기 선택한를 캡처하려면 클릭하세요.

Scene Templates 파이프라인

이 속성들을 사용하여 이 템플릿에 Scene Templates 파이프라인 스크립트를 추가한다.

Scene Templates 파이프라인 스크립트를 사용하면 템플릿에서 새 씬을 만들 때 사용자 정의 코드를 실행할 수 있다. 새 씬 생성 사용자 정의를 참조하라.

종속성

이 섹션에는 모든 템플릿 씬 종속성이 나열됩니다. 템플릿에서 새 씬을 만들 때 각 종속성을 복제할지 여부를 선택할 수 있다.

이름으로 종속성을 검색하려면 검색 창에 텍스트를 입력하라.

종속성 목록을 정렬하려면:

  • 종속성 제목을 클릭하여 이름순으로 정렬.
  • 유형 제목을 클릭하여 종속성 유형별로 정렬.
  • 복제 제목을 클릭하여 복제 상태별로 정렬.

각 종속성에 대해 복제를 켜서 복사본을 만들거나 끄고 원본을 참조합니다. 참조된 종속성은 원본에 대한 모든 변경 사항을 반영합니다.

템플릿에서 새 씬을 만들 때 Unity는 복제 가능한 종속성을 확인합니다. 발견되면 Unity는 새 씬의 이름과 일치하는 폴더를 만들고 복제된 종속성을 그곳에 배치.

복제된 종속성과 참조된 종속성에 대한 자세한 내용은 템플릿과 씬 종속성을 참조.

Unity가 기본적으로 복제할 에셋 유형을 지정하려면 Scene Templates 프로젝트 설정을 편집.

새 씬 생성 사용자 정의

Unity가 Scene Template에서 새 을 생성할 때 사용자 정의 코드를 실행하려면, Scene Template Pipeline 스크립트를 생성하고 템플릿에 연결하세요. Unity는 새 씬을 생성할 때마다 이 파이프라인 스크립트의 새 인스턴스를 생성.

스크립트를 템플릿에 연결하려면:

  1. 템플릿을 검사하여 속성을 편집하세요.
  2. Scene Template Pipeline 속성이 Scene Template Pipeline 스크립트를 가리키도록 설정.

C#을 통해 SceneTemplateAsset.templatePipeline 메서드를 사용할 수도 있다.

Scene Template Pipeline 스크립트는 [ISceneTemplatePipeline] 인터페이스나 [SceneTemplatePipelineAdapter]에서 파생되어야 합니다. 아래와 같이 BeforeTemplateInstantiation이나 AfterTemplateInstantiation과 같이 반응하고자 하는 이벤트를 구현.

예시:

using UnityEditor.SceneTemplate;
using UnityEngine;
using UnityEngine.SceneManagement;
publicclass DummySceneTemplatePipeline : ISceneTemplatePipeline{
publicvoid BeforeTemplateInstantiation(SceneTemplateAsset sceneTemplateAsset,bool isAdditive,string sceneName)
    {
if (sceneTemplateAsset)
        {
            Debug.Log($"Before Template Pipeline {sceneTemplateAsset.name} isAdditive: {isAdditive} sceneName: {sceneName}");
        }
    }

publicvoid AfterTemplateInstantiation(SceneTemplateAsset sceneTemplateAsset, Scene scene,bool isAdditive,string sceneName)
    {
if (sceneTemplateAsset)
        {
            Debug.Log($"After Template Pipeline {sceneTemplateAsset.name} scene: {scene} isAdditive: {isAdditive} sceneName: {sceneName}");
        }
    }
}

Scene Template 인스턴스화 순서

복제 가능한 종속성이 있는 Scene Template에서 새 씬을 생성할 때, Unity는 여러 파일 작업을 수행합니다. 스크립트에서 Unity 이벤트를 통해 이러한 대부분의 작업을 감지하고 반응할 수 있다.

인스턴스화 순서는 다음 단계를 따른다:

  1. 새 씬 대화상자에서 생성을 클릭하면 Unity는 다음을 호출한다:
    • Scene Template 에셋.
    • 템플릿 씬. 이것은 템플릿과 연결된 Unity 씬이다.
    • 새 씬. 이것은 템플릿 씬의 새로운 인스턴스이다.
  2. Unity는 템플릿 에셋에 대한 ISceneTemplatePipeline.BeforeTemplateInstantiation 이벤트를 트리거하고 에셋을 ISceneTemplatePipeline 스크립트에 바인딩.
  3. Unity는 SceneTemplate.NewTemplateInstantiating 이벤트를 트리거.
  4. Unity는 템플릿 씬의 복사본으로 새 씬을 생성.
  5. Unity는 새 씬의 이름과 일치하는 폴더를 생성하고 모든 복제 가능한 종속성을 여기에 복사.
  6. Unity는 새 씬을 메모리에 열고 다음 이벤트를 트리거:
    • EditorSceneManager.sceneOpening
    • MonoBehavior.OnValidate (이를 구현하는 모든 GameObject에서)
    • EditorSceneManager.sceneOpened
  7. Unity는 모든 복제 가능한 에셋에 대한 참조를 재매핑하여 새 씬이 복제본을 가리키도록 한다.
  8. Unity는 새 씬을 저장하고 다음 이벤트를 트리거:
    • EditorSceneManager.sceneSaving
    • EditorSceneManager.sceneSaved
  9. Unity는 템플릿 에셋에 대한 ISceneTemplatePipeline.AfterTemplateInstantiation을 트리거하고 ISceneTemplatePipeline 스크립트에 바인딩.
  10. Unity는 SceneTemplate.NewTemplateInstantiated 이벤트를 트리거.

Scene Template 설정

Scene Template 프로젝트 설정에 접근하려면 프로젝트 설정 창을 열고(메뉴: 편집 > 프로젝트 설정) 카테고리 목록에서 Scene Template을 선택.

Scene Template 프로젝트 설정 패널

새 씬 설정

새 씬 설정(1)은 파일 메뉴(파일 > 새 씬) 또는 Ctrl/Cmd + N 단축키를 사용하여 새 씬을 만들 때 발생하는 동작을 결정한다.

옵션: 설명:

새 씬 메뉴    
  새 씬 대화상자 새 씬 대화상자를 엽니다.
  내장 씬 새 씬 대화상자를 열지 않고 새 씬을 생성합니다. 새 씬은 프로젝트의 기본 템플릿의 복사본입니다.

기본 유형 설정

기본 유형 설정은 Scene Template에서 새 씬을 만들 때 Unity가 기본적으로 특정 에셋 유형을 복제할지 여부를 결정.

Unity가 특정 에셋 유형을 기본적으로 복제하도록 하려면 목록에서 해당 복제 옵션(2)을 활성화.

Unity가 특정 에셋 유형을 기본적으로 참조하도록 하려면 해당 복제 옵션(2)을 비활성화.

목록에 없는 에셋 유형의 경우, 기타 모든 유형(3)에 대한 복제 옵션을 활성화하거나 비활성화하여 기본 복제/참조 동작을 설정.

목록에서 에셋 유형을 제거하려면 제거 버튼(4)을 클릭.

목록에 에셋 유형을 추가하려면 다음 중 하나를 수행:

  • 유형 추가 필드(5)에 특정 에셋 유형을 입력.
  • 찾아보기 버튼(6)을 클릭하여 검색 창을 열고 특정 에셋 유형을 선택.

그런 다음 추가 버튼(7)을 클릭하여 에셋 유형을 목록에 추가.

Unity의 기본 에셋 유형 목록과 설정을 복원하려면 기본값 복원 버튼(8)을 클릭.

'UNITY3D' 카테고리의 다른 글

유니티 6.2 렌더링 패스  (0) 2025.02.10
[Experimental] Day-lighting Look-Dev Lab Scene  (0) 2025.01.23
Unity 의 Cull Method.  (0) 2024.12.03
SSAO and Kawase Blur  (0) 2024.10.28
Adaptive Probe Volume 데이터 스트리밍  (3) 2024.10.09