반응형
Unity 에서 어떤 특정상황에 다른 Scene 을 로드해야할 상황들이 생긴다. 일반적으로는 Project파일에서 클릭하여 다른 씬을 확인하는 경우들이 많다. 이를 해결하기 위해 Runtime 중에 인스펙터 창의 버튼을 활요하여 Scene을 로드할 수 있도록 구성해보겠다.
먼저 Scene을 로드하는 스크립트를 작성한다.
using UnityEngine.SceneManagement;
public class SceneLoaderManagements : MonoBehaviour
{
public string sceneManagementName;
public void ChangeScene(string sceneName)
{
SceneManager.LoadSceneAsync(sceneName);
}
}
간단하게 비동기 로드를 할 수 있도록 하는 스크립트이다. 이제 커스텀 에디트를 위해 assets 폴더 밑에 Editor 폴더를 생성하여 준다.
그리고 Editor 폴더 내에 SceneLoaderManagementsEditor.cs 파일을 생성하여 준다.
using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
[CustomEditor(typeof(SceneLoaderManagements))]
public class SceneLoaderManagementsEditor : Editor
{
public SceneLoaderManagements sceneLoaderManagements;
SerializedProperty sceneName;
private void OnEnable()
{
if (AssetDatabase.Contains(target))
{
sceneLoaderManagements = null;
}
else
{
sceneLoaderManagements = (SceneLoaderManagements)target;
sceneName = serializedObject.FindProperty("sceneManagementName");
}
}
public override void OnInspectorGUI()
{
base.OnInspectorGUI();
if (sceneLoaderManagements == null)
{
return;
}
if (GUILayout.Button("Scene Load"))
{
sceneLoaderManagements.ChangeScene(sceneName.stringValue);
}
}
}
생성한 스크립트를 위의 코드를 넣어준다.
Scene 에서 빈 게임오브젝트를 생성한 후 SceneLoaderManagements.cs 를 컴포넌트로 붙여준다.
위와 같이 버튼이 생기는 것을 확인할 수 있다. 이제 특정 상황에서 Scene 명만 입력하면 언제든 Scene 을 로드할 수 있게 된다.
728x90
반응형
'Unity > UnityEditor' 카테고리의 다른 글
[Localization] OdinInspector 와 Localization Editor 충돌 해결 (0) | 2022.10.14 |
---|---|
[UnityEditor] 유니티 Attribute 인스펙터 정리 #2 (1) | 2022.08.25 |
[UnityEditor] 유니티 Attribute 인스펙터 정리 #1 (2) | 2022.08.24 |