오늘의 학습 키워드

UI 중복 없이 랜덤 뽑기

 

공부한 내용

UI 중복 없이 랜덤 뽑기

구현해야할 것 : UI 안에 아이템을 등록해야 하는데 중복 없이 뽑으려고 한다.

시도한 것 1 : 배열을 검사하여 이미 생성했다면 continue로 다시 돌아가 반복하기

문제점 : 이미 검사한 것을 반복적으로 검사하게 되어 시도 횟수가 많아질 수 밖에 없다.

시도한 것 2 : 리스트를 할당하여 이미 생성한 것이라면 리스트에서 제거하여 중복 검출을 한다.

장점 : 이미 생성한 것 이외의 조건도 추가가 가능하여 유연하다.

private void InstantiateRandomItems()
{
    List<UpgradeItem> upgradeItems = new List<UpgradeItem>(WeaponManager.Instance.WeaponPrefabs);
    int count = _itemCount;

    while (count > 0)
    {
        int index = UnityEngine.Random.Range(0, upgradeItems.Count);
        bool isMax = WeaponManager.Instance.IsLevelMax(upgradeItems[index]);

        if (isMax)
        {
            upgradeItems.Remove(upgradeItems[index]);
            continue;
        }

        Instantiate(upgradeItems[index], weaponParent);

        upgradeItems.Remove(upgradeItems[index]);

        count--;
    }
}

 

 

 

오늘의 회고

 오늘은 무기 데이터 구현과 UI 연결을 진행했다. 아직 실제 데이터가 적용(캐릭터의 투사체에 데이터 적용)은 되지 않았지만 내일 실제 데이터와 연결할 생각이다. 그리고 이후에는 각 무기 별로 발사되는 로직을 구현하도록 할 생각이다. 오늘 캐릭터와 연결하는 부분을 고민을 많이 해서 시간이 오래 걸렸지만 그래도 내일 어떻게 구현해야할지 답이 좀 나온 것 같아서 다행이다.

 내일은 추석 연휴가 시작되기 전 날인데 열심히 해서 연휴 때 여유롭게 진행했으면 좋겠다. 내일도 파이팅!

+ Recent posts