카테고리 없음
본캠프_TIL_73일차(DataManager 리펙토링)
티-히히
2024. 12. 26. 21:05
- 오전
- 오전회의
- 코드컨벤션 점검하기
- 5분 기록보드 세션 (11:00~12:00)
- 오후
- 로딩화면 만들기
- 스크린 매니저 -> (틀은 완료함.,)
- 꾸미기 - >(다시할 것)
- 피드백 관련 구현하기
- DataManager 리펙토링
- 확장메서드 활용한 데이터관리 → ugs로 나온 스크립트를 그대로 활용해서 datamanager로 통해 가져오는걸로 변경.
- UIBase에 SetCanvasorder 함수를 만들어둘 것
- UImanager을 작업할 떄 리턴할 때 스트링을 뺴주는 식으로 작업할 것. 그리고 그 스트링 변수는 상단에 지정해둘것.
- DataManager 리펙토링
- 로딩화면 만들기
DataManager 리펙토링
원래 코드
private MonsterSO[] _monsterSOs
MonsterSO[] monsterSOs = new MonsterSO[monsterDataList.Count];
for (int i = 0; i < monsterSOs.Length; i++)
{
monsterSOs[i] = ScriptableObject.CreateInstance<MonsterSO>(); // 인스턴스 생성
monsterSOs[i].id = monsterDataList[i].id;
monsterSOs[i].poolTag = monsterDataList[i].name;
monsterSOs[i].fatigue = monsterDataList[i].fatigue;
monsterSOs[i].minFearInflicted = monsterDataList[i].minFearInflicted;
monsterSOs[i].maxFearInflicted = monsterDataList[i].maxFearInflicted;
monsterSOs[i].cooldown = monsterDataList[i].cooldown;
monsterSOs[i].humanScaringRange = monsterDataList[i].humanScaringRange;
monsterSOs[i].requiredCoins = monsterDataList[i].requiredCoins;
monsterSOs[i].monsterType = monsterDataList[i].MonsterType;
}
return monsterSOs;
}
monsterSO를 바탕으로 list데이터를 SO데이터를 가공하여 가져왔었습니다.
리팩토링
private List<DataTable.Monster_Data> _baseMonsterDataList;
//몬스터 데이터 초기화
protected override void Awake()
{
...
LoadBaseMonsterData();
...
}
//몬스터 데이터 로드
private void LoadBaseMonsterData()
{
_baseMonsterDataList = Monster_Data.GetList();
}
//몬스터 데이터 가져오기
public List<Monster_Data> GetBaseMonsters()
{
return _baseMonsterDataList;
}
지금은 SO를 거치지 않은 리스트 형태로 가져오게 수정했습니다.
SO가 사라지면서 MonsterSO타입의 데이터를 모두 DataTable.Monster_Data로 바꿔주는 작업을 했습니다.
ex.전
MonsterSO selectedMonsterData = MonsterManager.Instance.GetSelectedMonsterData();
후
DataTable.Monster_Data selectedMonsterData = MonsterManager.Instance.GetSelectedMonsterData();
코드 수는 많이 줄었으나 지금 실력으로써 중간에 데이터 파싱부분을 수정하는 작업은 어려웠습니다
SO와 List는 구조적으로 크게 차이가 없지만
SO변수명과 List의 변수명이 다른부분이 있어 파악하는데에 시간이 들었습니다.
데이터 매니저 구조는 처음부터 효율적으로 짜둬야겠습니다