씬 전환을 위한 씬매니저 추가 및 씬 전환 기능 추가

This commit is contained in:
2026-01-28 03:23:42 +09:00
parent 3ddecbf75f
commit 7f17e25137
18 changed files with 617 additions and 84 deletions

View File

@@ -16,9 +16,6 @@ public class PlayerController : MonoBehaviour
// Managers.Input.KeytAction += OnKyeboard;
Managers.Input.MouseAction -= OnMouseClicked;
Managers.Input.MouseAction += OnMouseClicked;
// TEMP
Managers.UI.ShowSceneUI<UI_Inven>();
}
public enum PlayerState

View File

@@ -7,9 +7,11 @@ public class Managers : MonoBehaviour
InputManager _input = new InputManager();
ResourceManager _resource = new ResourceManager();
SceneManagerEx _scene = new SceneManagerEx();
UIManager _ui = new UIManager();
public static InputManager Input { get { return Instance._input; } }
public static ResourceManager Resource { get { return Instance._resource; } }
public static SceneManagerEx Scene { get { return Instance._scene; } }
public static UIManager UI { get { return Instance._ui; } }
// Start is called once before the first execution of Update after the MonoBehaviour is created

View File

@@ -0,0 +1,20 @@
using UnityEngine;
using UnityEngine.SceneManagement;
public class SceneManagerEx
{
public BaseScene CurrentScene { get { return GameObject.FindAnyObjectByType<BaseScene>(); } }
public void LoadScene(Define.Scene type)
{
CurrentScene.Clear();
SceneManager.LoadScene(GetSceneName(type));
}
string GetSceneName(Define.Scene type)
{
string name = System.Enum.GetName(typeof(Define.Scene), type);
return name;
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 0c0749fe13086e04389ab99ece6ff556

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: f06374397604d2a4b9a577092e07085f
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,26 @@
using UnityEngine;
using UnityEngine.EventSystems;
public abstract class BaseScene : MonoBehaviour
{
public Define.Scene SceneType { get; protected set; } = Define.Scene.Unknown;
void Awake()
{
Init();
}
protected virtual void Init()
{
// 더 이상 사용되지 않음
// GameObject.FindObjectOfType(typeof(EventSystem));
Object obj = GameObject.FindAnyObjectByType(typeof(EventSystem));
if (obj == null)
{
Managers.Resource.Instantiate("UI/EventSystem").name = "@EventSystem";
}
}
public abstract void Clear();
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: c2d6a83258872b54790d4bf9eb9b622d

View File

@@ -0,0 +1,18 @@
using UnityEngine;
public class GameScene : BaseScene
{
protected override void Init()
{
base.Init();
SceneType = Define.Scene.Game;
Managers.UI.ShowSceneUI<UI_Inven>();
}
public override void Clear()
{
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: e645d8d7d1bfd2741a3cbf36d9ca9d1d

View File

@@ -0,0 +1,25 @@
using UnityEngine;
using UnityEngine.SceneManagement;
public class LoginScene : BaseScene
{
protected override void Init()
{
base.Init();
SceneType = Define.Scene.Lobby;
}
private void Update()
{
if (Input.GetKeyDown(KeyCode.Q))
{
Managers.Scene.LoadScene(Define.Scene.Game);
}
}
public override void Clear()
{
Debug.Log("LoginScene Clear!");
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: ab5eeff420d6c134fb7957a9f79ab203

View File

@@ -2,6 +2,14 @@ using UnityEngine;
public class Define
{
public enum Scene
{
Unknown,
Login,
Lobby,
Game,
}
public enum UIEvent
{
Click,