개인개발기록/게임개발프로젝트
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의 정보를 관리할수있게 되었다