오늘의 학습 키워드

참조

 

공부한 내용

중복 장착 버그

팀 과제를 제출하고 나서 문제를 발견했는데 같은 아이템이 여러 개라면 하나만 장착해도 다 장착되는 문제가 있었다.

디버그를 해보니 문제는 몬스터의 보상 아이템의 참조 문제라는 것을 알게 되었다.

몬스터 생성자의 마지막 매개변수로 보상 아이템이 들어가는데 같은 아이템을 참조해버리니 보상을 줄 때도 같은 메모리를 참조하여 같은 아이템이라고 생각하고 값이 같이 변경 되었던 것이다.

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#에서 많이 단단해졌으니 유니티로 넘어가서 배웠던 것들을 잘 써먹어 봐야겠다. 다음 주도 파이팅!

+ Recent posts