티스토리 뷰

# 어제 수정하던 난이도증에 따른 재화 수급에 문제가 생겼다. 룸클리어 , 보스 클리어 후 재화 수급에는 문제가 없으나

히든 룸에서의 재화 수급에 문제가 있었다. 

 

*가장 먼저 재화가 수급되고 있는 로직을 확인해봐야했다. 

1. UINPCPopupDirector 에서 플레이어가 상호작용(확정 버튼클릭)을  하면 이벤트 디스패치를 통해 
ChestItemGenerator에게 Item 생성을 요청한다

 

(EventDispatcher.Instance.Dispatch<Transform, string>(EventDispatcher.EventName.ChestItemGeneratorMakeItemForChest, this.NPCPos, chestType);)

 

2. 이벤트를 요청 받은 ChestItemGenerator는 MakeCoinInDungeon,MakeEhterInDungeon 메서드에서 

현재 스테이지와 난이도를 DropItem(Chest에서 생성되는 오브잭트들 (장비,재화,무기,특수장비))의 스테이지와 난이도에 정의한다. 

 

3.DropItem에서 생성되는 재화는 GetCoin,와 GetEther 메서드에서 정의된 스테이지와 난이도를 DataManager.Instance.GetRewardGold의 인자로 전달하고 전달반은 DataManager는 인자를 Key로 Value를 반환한다

반환 받은 값을 InfoManager.instance.IncreaseDungeonGold(); 에 인자로 전달 후 유저의 재화를 올려준다

 

*디버그창의 오류메세지를 확인해보니 DropItem에서 Key 값을 찾지못하고 있었다. 

어제까지 수정한 로직은 step(난이도)만 정의를 했어서 생기는 문제였다. comeparetage("HiddenChest") 의 조건을 추가해

stage를 정의하는 쪽으로 로직을 수정해야겠다.

 

*ChestItemGenerator에서 stage or step을 정의해주는 곳만 수정하면 된다고 판단이 됐다.

 private void MakeCoinInDungeon(Transform callPosition)
    {
        var coinGo = Instantiate(this.dropItem, callPosition);
        coinGo.tag = "Coin";
        Vector3 playerPosition = callPosition.position;
        float radius = 2f;
        Vector3 randomPosition = playerPosition + Random.insideUnitSphere * radius;
        coinGo.transform.position = randomPosition;
        var resultSpriteAtlas = AtlasManager.instance.GetAtlasByName("UIEquipmentIcon");
        var resultSp = resultSpriteAtlas.GetSprite("Coin");
        coinGo.GetComponent<SpriteRenderer>().sprite = resultSp;

        coinGo.transform.localScale = new Vector3(0.3f, 0.3f, 3f);
        coinGo.name = resultSp.name.Replace("(Clone)", "");

        var step = callPosition.GetComponent<NPCController>().stepNum;
        var stage = callPosition.GetComponent<NPCController>().stageNum;
        
       
        if (callPosition.CompareTag("HiddenChest"))
        {
            coinGo.GetComponent<DropItem>().stepNum = this.dungeonInfo.CurrentStageInfo;
            Debug.LogFormat("HiddenChest Coin,{0}", this.dungeonInfo.CurrentStageInfo);
        }
        else
        {
            Debug.Log("NormalChest Coin");
            coinGo.GetComponent<DropItem>().stepNum = step;
        }
    }
    public void GetCoin() 
    {        
        var rewardGold = DataManager.Instance.GetRewardGold(this.stepNum);
        Debug.LogFormat("<color=yellow>gold : {0}</color>",rewardGold);
        InfoManager.instance.IncreaseDungeonGold(rewardGold);
        EventDispatcher.Instance.Dispatch(EventDispatcher.EventName.UICurrencyDirectorUpdateGoldUI);
        Destroy(this.gameObject);
    }

*HiddenChest tag일 경우 현재 던전의 스테이지값을 할당하고 DropItem 에서 키값으로 찾게 수정했다.

 

#Test (1stage)

*chest_data

{
    "id": 4000,
    "stage": 1,
    "difficulty": 1,
    "chest_type": "Wood_Chest",
    "grade": "Wood",
    "Wood": 2,
    "Iron": 0,
    "Gold": 0,
    "Diamond": 0,
    "reward_gold": 2700,
    "reward_ether": 55
  },
  {
    "id": 4001,
    "stage": 1,
    "difficulty": 2,
    "chest_type": "Wood_Chest",
    "grade": "Wood,Iron",
    "Wood": 3,
    "Iron": 1,
    "Gold": 0,
    "Diamond": 0,
    "reward_gold": 3600,
    "reward_ether": 73
  },
  {
    "id": 4002,
    "stage": 1,
    "difficulty": 100,
    "chest_type": "Diamond_Chest",
    "grade": "Wood,Iron",
    "Wood": 4,
    "Iron": 2,
    "Gold": 0,
    "Diamond": 0,
    "reward_gold": 4950,
    "reward_ether": 100
  },

 

#만들어 놓은 chest_data대로 수급된다. 문제는 HiddenGoldChest, HiddenIronChest에서도 수급되는 재화 양을 다르게 주는 로직도 필요해 보였다.

아직 Chest에서 손봐야할 것들이 남아있다. Chest에서 생성되는 아이템에 대한 로직(현재는 Test용으로 정해진 아이템만 드랍되고있다),

상자가 생성될때, 아이템이 드랍될떄의 연출을 추가해야한다. 

 

#로직들을 수정하며 느끼는 점들이 아주 많다.

스크립트를 작성하기 전 머리속으로 로직을 생각 후 데이터 테이블을 만들었었다. 

그 후 생기는 문제들은 한두가지가 아니었다. 처음부터 로직을 잘못 생각하고 스크립트를 작성했다는 느낌이 강하게 들었다. 

버그 또는 기능이 정상적으로 작동 하지 않을때 어디서부터 수정할지가 막막했다. 서로 상호작용하는 오브잭트들이 많아서 자칫하면 팀원의 다른 로직을 건들 수도 있기 때문에 신중하게 고민하고 수정해야했다. 어느 부분을 수정해야 다른 로직을 건들지 않고 원하는 로직만 수정할 수 있을지 아직 빠르게 보이지 않는다.

 

 

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함