오늘의 학습 키워드
참조
공부한 내용
중복 장착 버그
팀 과제를 제출하고 나서 문제를 발견했는데 같은 아이템이 여러 개라면 하나만 장착해도 다 장착되는 문제가 있었다.
디버그를 해보니 문제는 몬스터의 보상 아이템의 참조 문제라는 것을 알게 되었다.
몬스터 생성자의 마지막 매개변수로 보상 아이템이 들어가는데 같은 아이템을 참조해버리니 보상을 줄 때도 같은 메모리를 참조하여 같은 아이템이라고 생각하고 값이 같이 변경 되었던 것이다.
monsters = new Monster[]
{
new Monster("Lv.1 미니언", 1, 10, 3, 10, Items[8]),
new Monster("Lv.2 미니언", 2, 15, 5, 20, Items[9]),
new Monster("Lv.5 대포미니언", 5, 25, 8, 50, Items[8]),
new Monster("Lv.3 공허충", 3, 10, 9, 30, Items[9])
};
그래서 이를 해결하기 위해 아이템 데이터(원본)으로 새 아이템을 만든 뒤 보상 아이템으로 넣어주는 작업을 진행했다.
Item dropItemData = null;
switch (player.Job)
{
case "전사":
dropItemData = GetDropEquipmentWithID(itemData, 1005);
break;
case "궁수":
dropItemData = GetDropEquipmentWithID(itemData, 1009);
break;
case "마법사":
dropItemData = GetDropEquipmentWithID(itemData, 1013);
break;
case "도적":
dropItemData = GetDropEquipmentWithID(itemData, 1017);
break;
}
Item dropItemDefault = SetItemData(Items[0]);
Item dropItemOfJob = SetItemData(dropItemData);
monsters = new Monster[]
{
new Monster("Lv.1 미니언", 1, 10, 3, 10, dropItemDefault),
new Monster("Lv.2 미니언", 2, 15, 5, 20, dropItemOfJob),
new Monster("Lv.5 대포미니언", 5, 25, 8, 50, Items[ItemCount - 2]),
new Monster("Lv.3 공허충", 3, 10, 9, 30, Items[ItemCount - 1])
};
해결된 모습
오늘의 회고
오늘은 팀 과제 제출이 있었다. 고민도 많이 한 만큼 배운 것도 많았고 조금 아쉬웠던 부분은 조금 더 많이 만들지 못해 아쉬웠던 것 같다. 그놈의 json 데이터가 뭔지 이번 주에 날 괴롭혔지만 오히려 지금 배우는 게 더 좋을 거라고 생각한다. 그리고 참조에 관해서도 많이 배워서 다음엔 로직 만들 때 고려하고 만들어야 겠다.
다음 주에는 유니티 강의를 듣는 시간과 개인 과제가 주어지는데 다시 유니티를 한다니 기대가 되고 재밌을 것 같다. c#에서 많이 단단해졌으니 유니티로 넘어가서 배웠던 것들을 잘 써먹어 봐야겠다. 다음 주도 파이팅!
'스파르타 Unity 1기' 카테고리의 다른 글
내일배움캠프 20일차 TIL - Atan2, TileMap (0) | 2023.09.04 |
---|---|
내일배움캠프 4주차 WIL - 팀 TextRPG (0) | 2023.09.04 |
내일배움캠프 18일차 TIL - 사용자 데이터와 테이블 (1) | 2023.08.31 |
내일배움캠프 17일차 TIL - 다운 캐스팅, System.InvalidCastException (0) | 2023.08.30 |
내일배움캠프 16일차 TIL - JsonSerializer.Deserialize InvalidOperationException 오류 (0) | 2023.08.29 |