[유니티] 클로저 문제
클로저 문제(closure issue)는 유니티에서 onClick.AddListener()를 사용할 때, 해당 이벤트 리스너가 추가된 당시의 value 변수 값을 캡처하기 때문에 발생합니다.문제의 원인"aButton.onClick.AddListener(() => OpenAUI(value));" 와 같은 코드에서, value는 메서드 호출 시점의 값이 아니라 람다식이 정의될 당시의 변수 참조를 캡처합니다. 따라서, 여러 번 "Button.onClick.AddListener(() => OpenAUI(value));" 가 호출되어도, 이벤트 리스너는 항상 처음 캡처된 value를 참조합니다.해결 방법value 값을 이벤트 리스너에 정확히 전달하려면, 지역 변수를 추가하여 값 자체를 캡처하도록 수정해야 합니다...
Unity
2024. 11. 24. 22:49