개인개발기록/게임개발프로젝트

2025_04_30_플랫포머_게임개발_연습_프로젝트

pop2bubbledev 2025. 5. 1. 01:10

[작업 제목]

작업 일자: 2025_04_30
주요 작업: Stage의 정보저장
진행도: 40%

1. 작업 요약

  • Stage클리어시점 정보를 SaveManager의 SlotData로 전송
  • 예상목표 / Stage 입장 여부 판단 및 정보를 배열로 담아 저장
  • 달성목표 / Stage 의 정보를 Dictionary 형식으로 담아 저장 

2. 상세 작업 내역

항목내용
추가 메서드/클래스 StageProgressData 클래스 추가 Dictionary 형태로 스테이지 정보 관리
수정 사항 배열을 이용한 스테이지 관리를 생각했으나 다중 스테이지 관리를 번호에 따라 저장하기위해 변경
삭제/리팩토링 StageData[] stages = new StageData[16]; 삭제
bool IsStageScene() 클래스 추가로 타이머 실행조건추가

2-1. 주요 코드 요약

(1) 클리어시 정보 저장

  • StageData / StageProgressData / SlotData

3가지의 객체를 변수에 담아 SlotData로 정보를 넘긴다

 if (!stageDataDict.ContainsKey(stage))
 {
     stageDataDict[stage] = new StageData();
 }

 // StageData data = stageDataDict[stage];
 var data = stageDataDict[stage];

 data.isCleared = true;
 data.clearTime = Mathf.Min(data.clearTime, clearTime);

 SaveData() 호출;

스테이지 클리어시 StageProgressData의 Dictionary의 키값에 해당하는 Value 에 StageData를 넣는다

만약 키값에 해당하는 Value값이 없다면 새로 생성한다

클리어 여부 bool 값 true 

클리어타임이 Data클래스의 클리어타임보다 낮다면 낮은 수치적용

 

 

3. 작업 중 변경사항

  •  StageData[] -> StageProgressData<Dictionary>

사유는 스테이지에 해당하는 값을주고 현재사용중인 Enum Stage와 연동하여 Scene과 저장을 같이 관리하기위한사항
List에 각 StageData를 담는 방식도 생각해보았으나

Enum 타입의 int형 저장의 특성상 Dictionary가 더 유리하다고 판단하였다

4. 소요 시간

항목시간
예상 소요 시간 3시간
실제 소요 시간 1시간30분

5. 작업 중 애로사항

  • 최근 Dictionary를 활용했어서 그걸 토대로 만들어보려고했는데 처음에 Key값을 무엇으로 잡아야하는지에 대해 고민이 좀 있었다
  • 너무 피곤해서 그대로 쓰러져서 자는 바람에 오랜작업을 수행하지 못하였다

6. 예상되는 문제점

  • 해당없음

7. 지난주 문제점

  • 정보를 제대로 저장하지못함
  • 현재는 Meta의 Enum 값만 받아와 그걸 변형시켜 넘겨주고있지만 받은 Enum값을기반으로 스테이지의 데이터를 전부 따로 저장해주어야한다 아마도 데이터가 하나로 통일된다거나 맞는 위치에 무조건 저장할수있다는 보장이없어 힘들것같다 
  • 지지난주 예상문제점이였으나 배열형태에서 Dictionary 에 Stage를 직접 담아 관리하는형식으로
  • MetaSO는 별개로 Stage의 정보를 관리할수있게 되었다