feature/fix_scenemanager #18
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "feature/fix_scenemanager"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Enum의 string과 Scene 에셋의 이름과 매칭시키는 방식 -> AssetReference 방식으로 변경했습니다.
기존의 Enum인 SceneType을 기반으로 AssetReference를 매칭시키고 SceneType을 통해서 모두 관리할 수 있도록 설계했습니다.
Editor의 경우는 Entry씬 제외하고도 실행할 수 있는 경우를 대비해서 전처리기로 따로 path 비교해서 현재 씬의 정보를 비교하도록 했습니다.
Editor path를 제외하고는 현재 씬 정보와 assetReference와 비교할 수 있는 값이 없음.
처음 씬은 addressable에 의해서 로딩되는게 아니기 때문
@ -12,3 +16,1 @@
Entry = 0,
Restaurant = 1,
Voyage = 2
None = 0,
SceneInstance을 필드로 들고 있을 이유가 없었던 걸로 기억합니다.
그래서 SceneType 역시 불필요하다고 생각했는데,
혹시 구현상 반드시 필요할가요?
처음 플로우쪽과 씬을 설계할 때 Flow -> Scene AssetReference로 설계했는데,
중간에 SceneType이 들어갈 필요가 없다면 빼는 게 나을 것 같습니다.
SceneInstance은 AssetRefence를 통해서 loadScene하면 반환되는 데이터라서
scenemanager에서 sceneType을 key값으로 미리 생성된 씬에 매칭시켰습니다.
추후에 씬을 unload하는 경우 sceneInstance가 필요해서 가지고 있어야 합니다
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)
가독성 측면에서 kvp 같은 변수명은 좋지 않을 듯 합니다.
의미있는 변수명을 사용해주세요.
Checkout
From your project repository, check out a new branch and test the changes.