Short Cake
8PM - Animal Crossing Wild World

사생활 보호 설정

https://gamjia.tistory.com

Mini Rooms

  • 내 미니룸
  • 미니미설정
  • 미니룸설정
  • 답글수 [0]

What Friends Say

한마디로 표현해봐~

1촌평 관리

Unity For문 안의 AddListener

GamJia 2023. 9. 5. 14:18

원래 이런식으로 버튼 길이만큼

AddListener를 추가하려고 했는데

자꾸 마지막 기능만 활성화 되는거다.......

// Before
for(int i=0;i<_toppingButtons.Length;i++)
{                
    _toppingButtons[i].onClick.AddListener(() =>
    {
        int temp=i;
        Topping.instance.SetTopping(i);
    });
}

알고보니 for문 안에서 같은 변수 i를

람다식에 참조형태로 주었기 때문에

Closure Problem이 발생한 것....

 

그래서 아래와 같이 바꿨고 잘 작동한다

// After
for(int i=0;i<_toppingButtons.Length;i++)
{
    int temp=i;
    _toppingButtons[temp].onClick.AddListener(() =>
    {                    
        Topping.instance.SetTopping(temp);
    });
}

'Game Develop' 카테고리의 다른 글

Unity Animator Play  (0) 2023.09.08
Unity the generic type 'IEnumerator<T>' requires 1 type arguments  (0) 2023.09.06
Unity Can't Add Script  (0) 2023.09.05
근황  (0) 2023.08.22
Unity 시계, 달력 만들기 (매우 쉬움)  (0) 2023.07.22