씬 리로드 방식 이벤트 방식 -> 게임매니저로 통일

This commit is contained in:
NTG_Lenovo 2025-07-02 13:50:33 +09:00
parent 30146c02ce
commit ea5d822687
7 changed files with 33 additions and 58 deletions

View File

@ -2526,12 +2526,13 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 620909d88f805ee4898b9af964a7f0e8, type: 3}
m_Name:
m_EditorClassIdentifier:
<MoveSpeed>k__BackingField: 7
<MoveSpeedMultiplier>k__BackingField: 1
<DashSpeed>k__BackingField: 20
<DashTime>k__BackingField: 0.2
<DashCooldown>k__BackingField: 0.5
_moveSpeed: 7
_moveSpeedMultiplier: 1
_dashSpeed: 20
_dashTime: 0.2
_dashCooldown: 0.5
_dashParticle: {fileID: 0}
_walkingSfxName: TycoonPlayerWalking
_dashSfxName: TycoonPlayerDashing
cellManager: {fileID: 1015166837}
--- !u!114 &985479691
@ -2601,7 +2602,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 0
m_IsActive: 1
--- !u!114 &1015166833
MonoBehaviour:
m_ObjectHideFlags: 0

View File

@ -15,7 +15,7 @@ public enum CameraType
public class CameraManager : Singleton<CameraManager>
{
[ShowInInspector]
[ShowInInspector, ReadOnly]
private Dictionary<CameraType, CinemachineCamera> _cameraDict;
private CinemachineBrain _cinemachineBrain;
@ -27,28 +27,10 @@ protected override void OnAwake()
_cinemachineBrain = GetComponent<CinemachineBrain>();
}
private void Start()
public void ChangeScene(string sceneName)
{
SceneManager.sceneLoaded += OnSceneLoaded;
}
private void OnDestroy()
{
SceneManager.sceneLoaded -= OnSceneLoaded;
}
private void OnSceneLoaded(Scene scene, LoadSceneMode mode)
{
_ = RegisterCinemachineCamerasAsync(scene);
}
private async Task RegisterCinemachineCamerasAsync(Scene scene)
{
// 씬 로딩 직후는 Hierarchy 반영이 완료되지 않았을 수 있음
await Task.Yield(); // 다음 프레임까지 대기
var foundCams = FindObjectsByType<CinemachineCamera>(FindObjectsInactive.Include, FindObjectsSortMode.None);
_cameraDict.Clear();
_cameraDict = new Dictionary<CameraType, CinemachineCamera>(foundCams.Length);
foreach (var cam in foundCams)
{
@ -63,9 +45,7 @@ private async Task RegisterCinemachineCamerasAsync(Scene scene)
}
}
Debug.Log("[CameraManager] 카메라 등록 완료");
if (scene.name == "01.Restaurant")
if (sceneName == "01.Restaurant")
{
SwitchCamera(CameraType.BaseCam);
}

View File

@ -36,13 +36,16 @@ public async Task ChangeScene(SceneName sceneName)
while (loadSceneAsync is { isDone: false })
await Task.Yield();
// 씬 로딩 후 초기화 작업
UiManager.Instance.ChangeScene(previousSceneName, changeSceneName);
CameraManager.Instance.ChangeScene(changeSceneName);
KeyManager.Instance.ChangeScene(changeSceneName);
await Task.Delay(1000);
await UiManager.Instance.FadeOut();
Debug.Log($"씬 로드 및 전환 완료: {changeSceneName}");
Debug.Log($"{changeSceneName} 씬으로 전환 완료");
}
public void ChangeSceneByIndex(int index)

View File

@ -24,24 +24,14 @@ public class KeyManager : Singleton<KeyManager>
protected override void OnAwake()
{
base.OnAwake();
_currentPlayerInput = GetComponent<PlayerInput>();
}
private void Start()
{
SceneManager.sceneLoaded += OnSceneLoaded;
}
private void OnDestroy()
{
SceneManager.sceneLoaded -= OnSceneLoaded;
}
private void OnSceneLoaded(Scene scene, LoadSceneMode mode)
public void ChangeScene(string sceneName)
{
string currentSceneName = SceneManager.GetActiveScene().name;
switch (currentSceneName)
switch (sceneName)
{
case "00.Title":
SwitchCurrentActionMap(InputActionMaps.Ui);

View File

@ -67,8 +67,9 @@ public async Task FadeOut()
}
_fadeOut.Restart();
await _fadeOut.AsyncWaitForCompletion();
_fadePanel.SetActive(false);
}

View File

@ -4,9 +4,9 @@ SpriteAtlasImporter:
externalObjects: {}
textureSettings:
serializedVersion: 2
anisoLevel: 1
compressionQuality: 50
maxTextureSize: 2048
anisoLevel: 0
compressionQuality: 0
maxTextureSize: 0
textureCompression: 0
filterMode: 1
generateMipMaps: 0
@ -17,10 +17,10 @@ SpriteAtlasImporter:
packingSettings:
serializedVersion: 2
padding: 4
blockOffset: 1
blockOffset: 0
allowAlphaSplitting: 0
enableRotation: 1
enableTightPacking: 1
enableRotation: 0
enableTightPacking: 0
enableAlphaDilation: 0
secondaryTextureSettings: {}
variantMultiplier: 1

View File

@ -4,9 +4,9 @@ SpriteAtlasImporter:
externalObjects: {}
textureSettings:
serializedVersion: 2
anisoLevel: 1
compressionQuality: 50
maxTextureSize: 2048
anisoLevel: 0
compressionQuality: 0
maxTextureSize: 0
textureCompression: 0
filterMode: 1
generateMipMaps: 0
@ -17,10 +17,10 @@ SpriteAtlasImporter:
packingSettings:
serializedVersion: 2
padding: 4
blockOffset: 1
blockOffset: 0
allowAlphaSplitting: 0
enableRotation: 1
enableTightPacking: 1
enableRotation: 0
enableTightPacking: 0
enableAlphaDilation: 0
secondaryTextureSettings: {}
variantMultiplier: 1