feature/fix_scenemanager #18

Open
iwnc2020 wants to merge 6 commits from feature/fix_scenemanager into develop
Owner

Enum의 string과 Scene 에셋의 이름과 매칭시키는 방식 -> AssetReference 방식으로 변경했습니다.
기존의 Enum인 SceneType을 기반으로 AssetReference를 매칭시키고 SceneType을 통해서 모두 관리할 수 있도록 설계했습니다.

Editor의 경우는 Entry씬 제외하고도 실행할 수 있는 경우를 대비해서 전처리기로 따로 path 비교해서 현재 씬의 정보를 비교하도록 했습니다.
Editor path를 제외하고는 현재 씬 정보와 assetReference와 비교할 수 있는 값이 없음.
처음 씬은 addressable에 의해서 로딩되는게 아니기 때문

Enum의 string과 Scene 에셋의 이름과 매칭시키는 방식 -> AssetReference 방식으로 변경했습니다. 기존의 Enum인 SceneType을 기반으로 AssetReference를 매칭시키고 SceneType을 통해서 모두 관리할 수 있도록 설계했습니다. Editor의 경우는 Entry씬 제외하고도 실행할 수 있는 경우를 대비해서 전처리기로 따로 path 비교해서 현재 씬의 정보를 비교하도록 했습니다. Editor path를 제외하고는 현재 씬 정보와 assetReference와 비교할 수 있는 값이 없음. 처음 씬은 addressable에 의해서 로딩되는게 아니기 때문
iwnc2020 self-assigned this 2025-08-01 05:46:33 +00:00
iwnc2020 added 2 commits 2025-08-01 05:46:34 +00:00
iwnc2020 requested review from Jeonghyeon 2025-08-01 05:46:45 +00:00
iwnc2020 added 1 commit 2025-08-01 08:32:25 +00:00
Jeonghyeon requested changes 2025-08-01 09:00:45 +00:00
@ -12,3 +16,1 @@
Entry = 0,
Restaurant = 1,
Voyage = 2
None = 0,
Collaborator

SceneInstance을 필드로 들고 있을 이유가 없었던 걸로 기억합니다.
그래서 SceneType 역시 불필요하다고 생각했는데,
혹시 구현상 반드시 필요할가요?

처음 플로우쪽과 씬을 설계할 때 Flow -> Scene AssetReference로 설계했는데,
중간에 SceneType이 들어갈 필요가 없다면 빼는 게 나을 것 같습니다.

SceneInstance을 필드로 들고 있을 이유가 없었던 걸로 기억합니다. 그래서 SceneType 역시 불필요하다고 생각했는데, 혹시 구현상 반드시 필요할가요? 처음 플로우쪽과 씬을 설계할 때 Flow -> Scene AssetReference로 설계했는데, 중간에 SceneType이 들어갈 필요가 없다면 빼는 게 나을 것 같습니다.
Author
Owner

SceneInstance은 AssetRefence를 통해서 loadScene하면 반환되는 데이터라서
scenemanager에서 sceneType을 key값으로 미리 생성된 씬에 매칭시켰습니다.
추후에 씬을 unload하는 경우 sceneInstance가 필요해서 가지고 있어야 합니다

SceneInstance은 AssetRefence를 통해서 loadScene하면 반환되는 데이터라서 scenemanager에서 sceneType을 key값으로 미리 생성된 씬에 매칭시켰습니다. 추후에 씬을 unload하는 경우 sceneInstance가 필요해서 가지고 있어야 합니다
Author
Owner

public class GameFlowSceneMappingSo : SerializedScriptableObject
{
public Dictionary<GameFlowState, SceneType> FlowToSceneMapping = new();
public Dictionary<SceneType, AssetReference> AssetMapping = new();
}

여기서 매핑 자체를 GameFlowState, AssetReference와 연동시켜서 sceneType 자체를 없애는 작업도 가능은 한 것 같습니다

public class GameFlowSceneMappingSo : SerializedScriptableObject { public Dictionary<GameFlowState, SceneType> FlowToSceneMapping = new(); public Dictionary<SceneType, AssetReference> AssetMapping = new(); } 여기서 매핑 자체를 GameFlowState, AssetReference와 연동시켜서 sceneType 자체를 없애는 작업도 가능은 한 것 같습니다
@ -36,0 +50,4 @@
var activeScene = UnityEngine.SceneManagement.SceneManager.GetActiveScene();
var activeScenePath = activeScene.path;
#if UNITY_EDITOR
foreach (var kvp in GameFlowManager.Instance.GameFlowSceneMappingSo.AssetMapping)
Collaborator

가독성 측면에서 kvp 같은 변수명은 좋지 않을 듯 합니다.
의미있는 변수명을 사용해주세요.

가독성 측면에서 kvp 같은 변수명은 좋지 않을 듯 합니다. 의미있는 변수명을 사용해주세요.
iwnc2020 added 1 commit 2025-08-01 09:25:24 +00:00
iwnc2020 added 2 commits 2025-08-01 10:20:55 +00:00
This pull request can be merged automatically.
This branch is out-of-date with the base branch
You are not authorized to merge this pull request.

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin feature/fix_scenemanager:feature/fix_scenemanager
git checkout feature/fix_scenemanager
Sign in to join this conversation.
No reviewers
No Label
No Milestone
No project
No Assignees
2 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: iwnc2020/ProjectDDD#18
No description provided.