ModuleManager 구조 변경
DataManager가 생겨나게 되면서 파츠 정보를 받는 구조가 싹 바뀌게 되었다.
어느정도 진행 후 작성하는거라 정리하기가 쉽지 않다.
먼저 게임을 시작할 때 기존 방법으론 Resources.LoadAll 을 통해
해당 폴더의 모든 파츠를 긁어오는 식으로 진행을 했었다.
하지만 현재는 DataManager에 저장된 PartData에 Prefab_Path가 담겨있고
해당 위치의 것을 가져올 수 있게 만들어 둔 상태이다.
게임을 시작하면 ModuleManager의 Init 메서드를 호출해
당장 플레이어에게 보여줄(해금이 된) 파츠들만 Dictionary에 담아놓도록 한다.
public void Init() // 게임 시작 시 Resources 폴더 내 초기 파츠 담기.
{
InitData initData = new InitData();
List<BasePart> lowerParts = new List<BasePart>();
List<BasePart> upperParts = new List<BasePart>();
List<BasePart> armWeaponParts = new List<BasePart>();
List<BasePart> shoulderWeaponParts = new List<BasePart>();
InitAddDict<LowerPart>(initData.LowerPartId, lowerParts);
InitAddDict<UpperPart>(initData.UpperPartId, upperParts);
InitAddDict<ArmsPart>(initData.ArmWeaponPartId, armWeaponParts);
InitAddDict<ShouldersPart>(initData.ShoulderWeaponPartId, shoulderWeaponParts);
LowerPartsCount = lowerParts.Count;
UpperPartsCount = upperParts.Count;
ArmWeaponPartsCount = armWeaponParts.Count;
ShoulderWeaponPartsCount = shoulderWeaponParts.Count;
_modules.Add(typeof(LowerPart), lowerParts);
_modules.Add(typeof(UpperPart), upperParts);
_modules.Add(typeof(ArmsPart), armWeaponParts);
_modules.Add(typeof(ShouldersPart), shoulderWeaponParts);
}
다만 처음에 보여줄 데이터들에 한해선 아직까지는 하드코딩으로 작성해둔 상태이다.
public class InitData
{
public readonly List<int> LowerPartId = new()
{
10001001,
};
public readonly List<int> UpperPartId = new()
{
10002001,
};
public readonly List<int> ArmWeaponPartId = new()
{
10003001,
10003002,
10003003,
10003004,
};
public readonly List<int> ShoulderWeaponPartId = new()
{
10004001,
10004002,
10004003,
};
}
그리고 InitAddDict<T> 메서드를 호출해 원하는 파츠의 데이터들을 리스트에 담도록 한다.
private void InitAddDict<T>(List<int> idList, List<BasePart> partList) where T : BasePart
{
foreach (var id in idList)
{
PartData data = Managers.Data.GetPartData(id);
T part = Resources.Load<T>(data.Prefab_Path);
part.SetID(id);
partList.Add(part);
}
}
여기서 넘겨준 List들은 Init에서 만들어준 List<T>로 다시 총 관리하는 Dictionary에 담도록 한다.
기존 코드에선 Value가 배열이었는데 해금을 하면 가변적인 구조가 필요했기 때문에 List로 바꿔주었다.
private Dictionary<Type, List<BasePart>> _modules = new Dictionary<Type, List<BasePart>>();
_modules.Add(typeof(LowerPart), lowerParts);
_modules.Add(typeof(UpperPart), upperParts);
_modules.Add(typeof(ArmsPart), armWeaponParts);
_modules.Add(typeof(ShouldersPart), shoulderWeaponParts);
'스파르타 내배캠' 카테고리의 다른 글
스파르타 내배캠 Unity 3기 - 55 (0) | 2024.04.10 |
---|---|
스파르타 내배캠 Unity 3기 - 54 (0) | 2024.03.28 |
스파르타 내배캠 Unity 3기 - 52 (0) | 2024.03.26 |
스파르타 내배캠 Unity 3기 - 51 (0) | 2024.03.22 |
스파르타 내배캠 Unity 3기 - 50 (0) | 2024.03.21 |