유니티 에셋/Feel

MMSceneLoading

스크립팅하는애님 2024. 7. 14. 02:55

요약: 이 페이지에서는 Feel에 포함된 헬퍼를 사용하여 프로젝트에서 씬을 로드하는 다양한 방법을 설명합니다.

테이블 내용
소개

  • 피드백을 사용하여 씬을 로드하는 방법
  • 피드백을 사용하여 씬을 추가적으로 로드하는 방법
        -  코드를 통해 씬을 로드하는 방법

  • 자신만의 로딩 화면 만들기

 

 

 

소개

Unity는 게임에서 씬을 전환하는 기본적인 방법을 제공하지만, 이는 매우 흥미롭지 않으며 사용자 친화적이지도 않습니다. Feel에는 씬을 로드하고 언로드하는 몇 가지 헬퍼가 포함되어 있어 옵션을 확장하면서도 간단하게 사용하고 쉽게 커스터마이징할 수 있으며, 전체적으로 플레이어에게 더 나은 경험을 제공합니다.

먼저 중요한 경고 사항을 알려드리겠습니다. 쉽게 잊기 쉬운 부분인데, Unity에서 씬을 로드하려면 해당 씬이 빌드 설정에 있어야 합니다 (파일 > 빌드 설정). 빌드 설정에 익숙하지 않다면 먼저 이를 읽어보는 것이 좋습니다. 로딩 씬을 사용하는 경우, 그 씬 역시 빌드 설정에 추가되어야 합니다.

 

피드백을 사용하여 씬을 로드하는 방법

새로운 씬을 로드하는 가장 쉬운 방법은 피드백을 사용하는 것입니다. 이는 코드를 필요로 하지 않으며 몇 초 만에 설정할 수 있습니다. 다음은 Feel에 포함된 데모 로딩 화면 중 하나를 사용하여 씬을 추가적으로 로드하는 예제입니다:

 

피드백을 사용하여 씬을 추가적으로 로드하는 방법

  1. Unity 2022.3.23f1(이상)에서 새로운 프로젝트를 생성하고, 패키지 매니저를 통해 Feel v4.1.2(이상)를 가져옵니다.
  2. 새로운 빈 씬을 생성합니다.
  3. 새 빈 오브젝트를 생성하고, 이름을 Feedback으로 설정합니다. MMF Player 컴포넌트를 추가한 후, "Add new feedback" 드롭다운을 통해 Scene > Load Scene 피드백을 추가합니다.
  4. SceneLoading/DestinationSceneName을 FeelDuck(Feel 데모 중 하나)으로 설정합니다.
  5. 빌드 설정을 엽니다(File > Build Settings). 프로젝트 뷰에서 FeelDuck 씬을 빌드 설정의 ScenesInBuild 패널로 드래그한 후, 창을 닫습니다.
  6. MMAdditiveLoadingScreen 씬도 같은 방식으로 설정합니다.
  7. 에디터에서 재생 모드로 들어간 후, MMF Player의 녹색 Play 버튼을 누릅니다. 로딩 화면이 나타나고, 로딩이 완료된 후 새로운 씬으로 전환됩니다.

 

 

 

보시다시피, 이 방법은 기본 Unity 방식보다 훨씬 간단하고 개선된 방법입니다. 피드백의 설정에서 몇 가지를 조정할 수 있으며, 먼저 로딩 모드를 선택할 수 있습니다. 사용 가능한 4가지 모드는 다음과 같습니다:

  • Direct: 기본 SceneManager.LoadScene 호출을 수행합니다.
  • Direct Additive: 기본 SceneManager.LoadScene 호출을 사용하지만 추가 모드로 실행됩니다.
  • MM Scene Loading Manager: 이 모드는 MMSceneLoadingManager를 사용하여 순차적, 비추가적인 씬 로드를 트리거합니다(현재 씬 언로드, 로딩 화면 로드, 새 씬 로드, 로딩 화면 언로드).
  • MM Additive Scene Loading Manager: 이 모드는 보다 고급인 MMAdditiveSceneLoadingManager를 사용합니다. 로딩 화면을 추가적으로 로드하며, 이전 씬을 언로드하지 않습니다(더 흥미로운 전환이 가능). 사용자 지정 지연 시간과 전환 곡선을 사용할 수 있습니다(다른 모드에서는 사용되지 않음).

마지막 모드에서는 전환을 위한 여러 지연 시간과 곡선을 조정할 수 있습니다. 이러한 설정은 MMFader(일반, 원형 또는 방향성 페이더)를 조정합니다. Feel에 포함된 다양한 데모 로딩 화면에서 이미 설정된 예제를 확인할 수 있습니다.

 

코드를 통해 씬을 로드하는 방법

코드를 통해 씬을 로드하는 것도 매우 간단합니다!

다음은 Unity에서 기본적으로 씬을 로드하는 방법입니다(빌드 설정에 TheNameOfMyDestinationScene이라는 씬이 있다고 가정):

SceneManager.LoadScene("TheNameOfMyDestinationScene");

 

다음은 MMSceneLoadingManager를 사용하여 씬을 로드하는 방법입니다 (LoadingScreen은 데모 로딩 화면 중 하나의 이름입니다. 이를 사용할 수 있습니다):

MMSceneLoadingManager.LoadScene("TheNameOfMyDestinationScene", "LoadingScreen");

 

마지막으로, 씬을 추가적으로 로드하는 방법은 다음과 같습니다(이 메서드는 더 많은 매개변수를 가지므로, IDE나 API 문서에서 자세히 확인해보세요):

MMAdditiveSceneLoadingManager.LoadScene("TheNameOfMyDestinationScene");

 

씬을 추가적으로 로드할 때, MMAdditiveSceneLoadingManagerSettings 클래스를 통해 다양한 설정을 지정할 수 있습니다. 전체 설정 목록을 확인하려면 해당 클래스를 참조하세요. 다음은 예제입니다:

MMAdditiveSceneLoadingManagerSettings mySettings = new MMAdditiveSceneLoadingManagerSettings();
mySettings.LoadingSceneName = "MyAdditiveLoadingSceneName";
MMAdditiveSceneLoadingManager.LoadScene("TheNameOfMyDestinationScene", mySettings);

 

기억하세요, 이러한 기능이 작동하려면 목적지 씬과 로딩 씬이 모두 빌드 설정에 포함되어 있어야 합니다.

 

 

자신만의 로딩 화면 만들기

자신만의 로딩 화면을 만들기 위해, 데모 중 하나를 시작점으로 사용하는 것이 가장 좋습니다. 먼저, MMAdditiveLoadingScreen 씬을 복제하여 MyAdditiveLoadingScreen으로 이름을 변경하고, 프로젝트 내의 Feel 폴더 외부에 위치한 적절한 장소로 이동한 후, 빌드 설정에 추가하고 엽니다.

보시다시피, 이 씬은 진행 상황을 숫자로 표시하는 텍스트와 프로그레스 바로 구성된 매우 간단한 씬입니다. 이러한 UI 요소들을 원하는 대로 편집할 수 있습니다. 예를 들어, 계층 구조에서 FaderExtension 오브젝트를 선택하고 색상을 변경할 수 있습니다. 데모 로고를 제거하고 자신만의 로고를 추가할 수도 있습니다.

또한 이 씬에는 LoadingSceneManager라는 오브젝트가 포함되어 있습니다. 인스펙터에서 이 오브젝트에는 다양한 UnityEvents가 있으며, 이를 통해 거의 모든 측면을 제어할 수 있습니다. 기본적으로 대부분은 비어 있으며, 텍스트 버전의 진행 상황과 프로그레스 바를 업데이트하는 바인딩만 설정되어 있습니다. 더 많은 기능을 추가해도 좋습니다!

편집이 완료되면 씬을 저장하고, 이제 코드나 피드백을 통해 새로운 씬을 추가적으로 로드할 때 기본 씬 이름 대신 새로 만든 씬 이름을 지정하면 해당 씬이 사용됩니다. Feel/MMTools/Tools/MMSceneLoading/LoadingScreens/ 폴더에서 여러 데모 로딩 씬을 찾을 수 있습니다. 대부분은 추가적으로 사용되며, LoadingScreen 씬은 비추가적인 MMSceneLoadingManager를 사용할 때 사용됩니다. 이 둘을 혼용하지 않도록 주의하세요!

이제 씬을 멋지게 로드하는 방법을 모두 알게 되었습니다. 잘하셨습니다!