• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

다른 클래스 필드에 선언된 멤버변수 bool의 값을 실시간으로 받아오려면?

22.02.23 10:34 작성 조회수 248

0

안녕하세요, 지난번 답변해주신 내용을 참고하여 이어서 작업을 해보다가... 이벤트 핸들러(UI_EventHandler)에 관한 질문을 한번 더 드려봅니다.

 

현재 제가 가장 헷갈리는 개념이 발생하는 지점은

 

UI_EventHandlerUpdate에서 OnPointerDown시 bool isTouched로 체크해서 터치를 감지하고 있는 부분을

 

외부 클래스인 skillPopup(제가 만든 클래스 : 이는 UI_Base/UI_Popup을 상속받음) 에서 bool isTouched 값을 참조하고자 했는데, 이 값을 전혀 읽어오지 못해서였습니다.

 

저는 skillPopupUpdate에서, 혹은 다른 클래스UI_EventHandler의 bool값을 실시간으로 인지하길 원합니다. 이 값을 외부에서도 참조하려면 어떤 방법을 써야할까요?

 

 

* 체크를 해주려는 이유는, 팝업창에서 버튼을 누르고 있는 동안 캐릭터 스탯을 += 1씩 올려주는 기능을 구현하기 위함인데요, 최초에는 매니저가 중앙에서 이를 대행해주길 원했지만 어려워서 일단 팝업에 구현해보고 있었는데 이 방법 조차 막혀서 어려운 상황이었습니다. 보통 이런 경우 매니저가 중앙에서 처리해주는 기능을 갖게되는게 맞나요? 어떤 방향으로 공부해보면 좋을지 힌트라도 주시면 정말 감사하겠습니다.

 

그럼 좋은 하루 되세요, 감사합니다.

답변 1

답변을 작성해보세요.

1

현재 구조상으로는 BindEvent를 할 때 콜백 함수를 건내줘서
UI_EventHandler에서 callback.Invoke()를 하게 되면
알아서 SkillPopup의 함수가 호출이 됩니다.

그리고 어떤 방향으로 공부하는 '힌트'라는 것은 존재하지 않습니다.
게임 학원에 가면 훈수두는 것을 금지하는데,
이렇게 헤딩하면서 고민하는 과정에서 비로소
많은 것을 배울 수 있기 때문이죠.

그 외 만약에 bool을 이용해 정말 뽑아오고 싶다면,
public bool XXX; 형태로 만들고
어떻게든 서로 다른 2 클래스 인스턴스끼리 알게 소개(?)를 시켜줘야 합니다.
현재 구조상 Managers.UI에 현재 팝업을 아니 그렇게 해도 되고,
유니티의 GameObject.Find()로 특정 오브젝트 이름으로 찾아도 되고,
굉장히 다양한 방법이 존재합니다.

AISH님의 프로필

AISH

질문자

2022.02.23

답변 감사합니다 더 헤딩해보겠습니다!