카테고리 없음

본캠프_TIL_64일차(몬스터 선택 후 MainScene으로 넘어가지 않음)

티-히히 2024. 12. 12. 21:00

오늘 한 일

  • 오전
    • 오전회의
    • 새로운 몬스터 spirteAtlas 만들기
      • sprite이름과 몬스터 이름이 같아야함.
    • test데이터 적용→ 실제 몬스터 데이터 적용
      • DataManager에 몬스터 데이터를 가져오는 함수작성필요
  • 오후
    • 오전 작업한것들 합치기
    • 선택된 몬스터데이터가 삭제되는 문제 발견. 고침.

 

 

오늘 오후 튜터님께 중간검사를 받았습니다

도중 몬스터 선택 후  MainScene으로 넘어가지 않는 문제가 발생했습니다.

 

몬스터가 다 선택되지 않아 발생한 오류였습니다. 그림에는 다 선택되어 있는걸로 나와 있음에도요.

들어온 정보를 바로 볼 수 있게 몬스터를 선택하면 왼쪽 하단과 같이 몬스터 정보를 볼 수 있게 만들어뒀습니다.

 

테스트 결과

슬롯을 클릭 후 이미 선택된 몬스터를 선택하면 몬스터 정보가 삭제되는 문제를 발견했습니다.

public void SelectListSlot(Sprite listSlotSprite)
{
    string name = listSlotSprite.name.Replace("(Clone)","").Trim();

    //이미 슬롯이 채워져있을 시 채워져있는 몬스터를 삭제해주는 로직.
    if (_selectedListData.ContainsKey(_crrSlotIdx))
    {
        _selectedListData.Remove(_crrSlotIdx);
    }

    //선택한 몬스터 데이터를 _selectedListData 넣어줌.
    foreach (var Data in _monsterListData) 
    {
        if (Data.Key == name) 
        {
            foreach (var data in _selectedListData)
            {
                if (data.Value.MonsterId == Data.Value)
                {
                    Debug.Log("이미 선택한 몬스터입니다!!");
                    testText.text = "";
                    foreach (var asdf in _selectedListData)
                    {
                        testText.text += $"{asdf.Key} : {asdf.Value}\n";
                    }
                    return;
                }
            }
            _selectedListData.Add(_crrSlotIdx, (Data.Value, Data.Key)); 
        }
    }

 

리스트 슬롯을 클릭하자마자 현재 슬롯의 몬스터를 삭제하고 있었기에 발생한 문제였습니다.

 

 if (_selectedListData.ContainsKey(_crrSlotIdx))
 {
     _selectedListData.Remove(_crrSlotIdx);
 }
 _selectedListData.Add(_crrSlotIdx, (Data.Value, Data.Key));

 

삭제하는 위치를 몬스터를 더해주는 위치 바로 전으로 바꿔 문제를 해결했습니다.