유니티 원하는 씬으로 실행되게 하기

이 포스팅에서 사용된 코드는 아래 블로거분의 코드를 참고하였습니다!

https://mentum.tistory.com/657

 

unity 언제나 특정 씬에서 시작하게 만들기

#. 특정 씬에서 시작하는 게임 환경 어느 씬 에서나 테스트할 수 있어야 한다!라는 개발 방침을 따르고 있지만 서버 등이 들어간 경우에는 시작 씬부터 초기화를 순차 진행하지 않으면 오류가 발

mentum.tistory.com

 


코드

[InitializeOnLoad]
public class EditorStartInit
{
   static EditorStartInit()
   {
      var pathOfFirstScene = EditorBuildSettings.scenes[0].path;
      var sceneAsset = AssetDatabase.LoadAssetAtPath<SceneAsset>(pathOfFirstScene);
      EditorSceneManager.playModeStartScene = sceneAsset;
   }
}

위 코드를 Editor 폴더 내 스크립트에 적어주기만 하면 된다!

꼭 꼭!! Editor 폴더 내에 존재해야함을 인지해야합니다!


이론

EditorBuildSettings.scenes[0].path

Build Settings 탭에 등록되어 있는 Scene의 배열[Index]를 넣어서 그 씬의 path를 가져옵니다!

 

path란?

그 에셋의 경로를 뜻합니다!

위 StartUp Scene같은 경우 Path는

[Assets] - [Scenes] - [StartUp.unity]가 되는 것입니다!


다음으로 

AssetDatabase.LoadAssetAtPath<SceneAsset>(pathOfFirstScene);
  • AssetDatabase는 프로젝트에 포함된 에셋에 접근하게 해주는 API입니다.
  • SceneAsset은 에디터에서 씬 객체를 참조할 때 사용됩니다!

EditorSceneManager

에디터에서 작동하는 씬 매니저를 사용하여 playModeStartScene을 통해 위에서 불러온 씬 에셋을 실행시킵니다!

에디터씬매니저의 기능에 대해서는 아래 사이트를 참고하시면 좋을 것 같습니다!

 

Unity - Scripting API: EditorSceneManager

Success! Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable. Close

docs.unity3d.com


[InitializeOnLoad]

컴파일 및 Play Mode 진입 시 실행되게 끔 하는 클래스 어트리뷰트 입니다!

한 번만 실행되며 반드시 Editor폴더 안 스크립트에서 작동해야 합니다!

 

 

자세한 어트리뷰트에 대해서는 아래 블로거가 잘 정리해두었으니 참고하면 좋을 것 같습니다!

https://rito15.github.io/posts/unity-editor-init-events/

 

유니티 - 컴파일, 게임 시작 시 실행되는 애트리뷰트 정리

공통 특징

rito15.github.io