카테고리 없음
본캠프_TIL_68일차(몬스터 타입 트러블 슈팅)
티-히히
2024. 12. 18. 20:58
- 오전
- 오전회의
- 스테이지 선택 스크롤 가능하게v
- 오후
- 타이틀씬 배경화면 작업v
- 스토리 패널작업v
- win popup losespopup 위로 올라오게v
몬스터 타입이 하나만 가져와지는 오류
private void SetMonsterScroll()
{
//_testSOs = DataManager.Instance.GetTestSprite();
_monsterSOs = DataManager.Instance.GetMonsterSOs();
_sprites = Resources.Load<SpriteAtlas>("UI/UISprites/MonsterSprites");
_monsterListData = new Dictionary<string, int>();
for (int i = 0; i < _monsterSOs.Length; i++)
{
if (_monsterSOs[i].monsterType == MonsterType.Stationary)
{
GameObject Instance = Instantiate(monsterListSlot);
Instance.transform.SetParent(monsterListScroll);
Instance.transform.localScale = Vector3.one;
var sprite = Instance.transform.GetChild(0).GetComponent<Image>();
sprite.sprite = _sprites.GetSprite(_monsterSOs[i].poolTag);
_monsterListData.Add(_monsterSOs[i].poolTag, _monsterSOs[i].id);
}
}
}
다음 코드는 몬스터 리스트를 보여주는 코드입니다.
if문을 타고 몬스터 타입이 Stationary인 몬스터만 와야하는데 모두 불러와지는 현상이 발생했습니다.
알고보니 모든 몬스터 타입이 Stationary로 불러와지고 있었습니다.
{
"Monster_Data": {
....
"MonsterType : Enum<MonsterType>": ["Stationary", "Stationary", "Stationary", "Stationary", "Summoner", "Minion", "Minion", "Minion", "Minion"]
...
},
json정보가 잘못된것이 아닌지 확인해본 결과. json은 정상이었습니다.
private MonsterSO[] SetMonsterSOs()
{
List<Monster_Data.Monster_Data> monsterDataList = Monster_Data.Monster_Data.GetList();
MonsterSO[] monsterSOs = new MonsterSO[monsterDataList.Count];
for (int i = 0; i < monsterSOs.Length; i++)
{
monsterSOs[i] = ScriptableObject.CreateInstance<MonsterSO>(); // 인스턴스 생성
monsterSOs[i].id = monsterDataList[i].id;
monsterSOs[i].poolTag = monsterDataList[i].name;
monsterSOs[i].fatigue = monsterDataList[i].fatigue;
monsterSOs[i].minFearInflicted = monsterDataList[i].minFearInflicted;
monsterSOs[i].maxFearInflicted = monsterDataList[i].maxFearInflicted;
monsterSOs[i].cooldown = monsterDataList[i].cooldown;
monsterSOs[i].humanScaringRange = monsterDataList[i].humanScaringRange;
monsterSOs[i].requiredCoins = monsterDataList[i].requiredCoins;
}
return monsterSOs;
}
몬스터데이터를 셋팅해주는 함수를 살펴보겠습니다.
잘 보니 몬스터 타입값을 셋팅해주지 않았었습니다
monsterType 은 enum타입으로
몬스터 타입값이 들어온 게 없으니 자동으로 0( Stationary )이 들어갔던 것 이었습니다.
monsterSOs[i].monsterType = monsterDataList[i].MonsterType;
다음 코드를 추가하여 해결했습니다.