해결된 질문
작성
·
190
·
수정됨
0
안녕하세요 루키스님^^
요세 루키스님 강의 덕택에 매일매일이 너무 즐거운 하루를 보내고 있는 수강생입니다.
이번에도 강의를 복습하던 중 궁금한 점이 하나 생겨서 질문올리게 되었습니다.
히어로 목록창에서 하나를 클릭하게 되면
1. UI_CharacterSlotItem.cs에서 OnClickSelectHeroImage()가 실행
2. OnClickSelectHeroImage() 실행시 onHeroSelected에 등록된 UISelectCharacterPopup.cs의 OnHeroSelected()가 실행
3. OnHeroSelected()에서 UISelectCharacterPopup.cs의 RefreshUI()실행
4. RefreshUI()가 실행되면 각 slots를 순회하면서 UICharacterSlotItem.cs의 SetInfo()가 실행
5. SetInfo()에서 UICharacterSlotItem.cs의 RefreshUI()실행
6. OnClickSelectHeroImage()에서 다시 UICharacterSlotItem.cs의 RefreshUI()실행
이런 순서로 RefreshUI()가 2회 실행이 되는 것으로 이해했습니다.
위 코드에서 SetInfo() 내부에 RefreshUI()가 들어 있음에도, OnClickSelectHeroImage()에도 RefreshUI()가 들어있습니다.
OnClickSelectHeroImage()에 RefreshUI()를 주석처리 해도 코드는 작동이 되는 것 같습니다.
혹시 OnClickSelectHeroImage()에 RefreshUI()를 넣어두신 다른 이유가 있으신가요?
답변 2
1
클라 코드에서 이런 중복 처리가 종종 보일 수 있는데,
사실 특별한 의도가 있다기 보다는
이리 저리 Refresh 코드를 넣다 보니 발생한 휴먼 에러입니다.
가끔은 코드를 정리하다 보면 어쩔 수 없는 경우도 있긴 하지만요-
0
안녕하세요, 인프런 AI 인턴입니다.
님의 질문에 대한 정확한 대답을 드리려면 루키스님의 강의 콘텐츠와 소스 코드 전체를 보는 것이 가장 좋겠지만, 제공된 정보만으로 유추를 해보면 OnClickSelectHeroImage()에 RefreshUI()를 추가로 호출하는 이유는, 사용자가 히어로를 선택할 때마다 UI를 즉각적으로 업데이트하기 위해 이중으로 확인하는 로직이 포함되어 있는 것일 수 있습니다.
SetInfo() 내부에서 RefreshUI()를 호출하는 것은 해당 슬롯의 정보를 갱신한 직후 바로 UI를 업데이트하려는 목적이고, OnClickSelectHeroImage()에서도 RefreshUI()를 호출하는 것은 사용자의 선택이 반영되어 전체 캐릭터 선택창 UI가 갱신되길 바라는 의도일 수 있습니다. 이렇게 두 곳에서 호출하는 것은 사용자의 인터렉션에 대한 응답성을 높이기 위한 추가적인 안전장치로 볼 수 있습니다.
그러나 이는 저의 추측일 뿐이므로, 이런 방식으로 코드가 작성된 구체적인 이유는 강의 내용을 더 상세히 살펴보거나 직접 루키스님에게 질문해보는 것이 가장 정확한 해답을 얻는 방법일 것입니다.
아하! 답변 감사합니다^^
루키스님 강의 너무 재밌어요. 앞으로도 열심히 따라가겠습니다^^