ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection.

Parameter name: index

System.Collections.Generic.List`1[T].get_Item (System.Int32 index) (at <31c0f51ac5a24a22ba784db24f4ba023>:0)

JoystickPlayerExample.Upgrade (System.Int32 selectedBUttonID) (at Assets/Joystick Pack/Examples/JoystickPlayerExample.cs:170)

UpgradePanel.Upgrade (System.Int32 pressedButtonID) (at Assets/Scripts/UpgradePanel.cs:42)

UnityEngine.Events.InvokableCall`1[T1].Invoke (T1 args0) (at <ad50157ee00e45cdb3c8bd67012f8804>:0)

UnityEngine.Events.CachedInvokableCall`1[T].Invoke (System.Object[] args) (at <ad50157ee00e45cdb3c8bd67012f8804>:0)

UnityEngine.Events.UnityEvent.Invoke () (at <ad50157ee00e45cdb3c8bd67012f8804>:0)

UnityEngine.UI.Button.Press () (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/UI/Core/Button.cs:70)

UnityEngine.UI.Button.OnPointerClick (UnityEngine.EventSystems.PointerEventData eventData) (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/UI/Core/Button.cs:114)

UnityEngine.EventSystems.ExecuteEvents.Execute (UnityEngine.EventSystems.IPointerClickHandler handler, UnityEngine.EventSystems.BaseEventData eventData) (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/EventSystem/ExecuteEvents.cs:57)

UnityEngine.EventSystems.ExecuteEvents.Execute[T] (UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.ExecuteEvents+EventFunction`1[T1] functor) (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/EventSystem/ExecuteEvents.cs:272)

UnityEngine.EventSystems.EventSystem:Update() (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/EventSystem/EventSystem.cs:501)


문제를 해결하니까 또 다른 문제가 생겼습니다 ..


 public void CheckLevelUp()

    {

        

        if (selectedUpgrades == null) { selectedUpgrades = new List<UpgradeDate>(); } 

        

        if (exp >= TO_Level_UP)

        {

            

            selectedUpgrades.AddRange(GetUpgrades(3));

            upgradePanel.OpenPanel(selectedUpgrades);

            exp -= TO_Level_UP;

            level += 1;

            

        }

        slider.UpdateExPerienceSlider(exp, TO_Level_UP);

        slider.Settext(level, TO_Level_UP);

        selectedUpgrades.Clear();

    }


    public List<UpgradeDate> GetUpgrades(int count)

    {

     

        List<UpgradeDate> upgradelist = new List<UpgradeDate>();

        upgradelist.Clear();

      

       


        for (int i = 0; i < count;)

        {

            int aa = Random.Range(0, upgrades.Count);

            if (upgradelist.Contains(upgrades[aa]))

            {

              

                aa = Random.Range(0, upgrades.Count);

            }

            else

            {

                upgradelist.Add(upgrades[aa]);

          

                i++;

            }

        }

        

        return upgradelist;

    }

       public void Upgrade(int selectedBUttonID) // 0을 선택 하면 selectedupgrades[0]이 됨.

    {

        UpgradeDate upgradeDate = selectedUpgrades[selectedBUttonID];

        if(acquiredUpgrades == null) { acquiredUpgrades = new List<UpgradeDate>();  }


        acquiredUpgrades.Add(upgradeDate);

    

        

    }

}


배열 들어간 joystick코드입니당