카테고리 없음

본캠프_TIL_73일차(DataManager 리펙토링)

티-히히 2024. 12. 26. 21:05
  • 오전
    • 오전회의
    • 코드컨벤션 점검하기
    • 5분 기록보드 세션 (11:00~12:00)
  • 오후
    • 로딩화면 만들기
      • 스크린 매니저 -> (틀은 완료함.,)
      • 꾸미기 - >(다시할 것)
    • 피드백 관련 구현하기
      • DataManager 리펙토링
        • 확장메서드 활용한 데이터관리 → ugs로 나온 스크립트를 그대로 활용해서 datamanager로 통해 가져오는걸로 변경. 
      • UIBase에 SetCanvasorder 함수를 만들어둘 것
      • UImanager을 작업할 떄 리턴할 때 스트링을 뺴주는 식으로 작업할 것. 그리고 그 스트링 변수는 상단에 지정해둘것.

 

 

 

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의 변수명이 다른부분이 있어 파악하는데에 시간이 들었습니다.

 

데이터 매니저 구조는 처음부터 효율적으로 짜둬야겠습니다