작성
·
51
·
수정됨
0
CourseInfo->OnChanged.AddUObject(MyStudent1, &UMyStudent::GetNotification);
인스턴스의 이 코드를 통해서 학생클래스에 있는 멤버함수와 Courseinfo 클래스에 있는 BroadCast랑 묶이는건가요??
Courseinfo 클래스에서 선언된 OnChanged 변수는
델리게이트에 접근하기위함일 뿐인 거같고
결국 AddUObject랑 특정객체의 멤버함수랑 연결만 해놓으면
델리게이트 멤버함수의 어디든 무조건 델리게이트의 BroadCast로만 이어지는건가요?
만약 그렇다면 CourseInfo->OnChanged.BroadCast(MyStudent1, &UMyStudent::GetNotification);
이렇게 쓰면 좀 덜헷갈렸을 거 같네요 ..ㅎ
답변 2
0
본 교안은 발행-구독 모델을 설명하는 용도로 고안되었습니다.
AddUObject는 구독하는 행동을, Broadcast는 발행하는 행동으로 이해하시면 되겠습니다.
발행-구독 모델에서 발행하는 주체(CourseInfo)와 구독을 주선하는 주체(MyGameInstance)는 서로 분리되어 있기에, 발행하는 주체는 직접 학생에 대한 정보를 몰라도 잘 동작한다는 점을 포인트로 생각해주시면 되겠습니다.
0
안녕하세요, 인프런 AI 인턴입니다. 욱태님,
질문해주신 내용은 언리얼 엔진의 델리게이트와 관련된 중요한 개념입니다. 언리얼의 델리게이트 시스템은 특정 이벤트가 발생했을 때 자동으로 호출될 수 있는 메서드나 함수 리스트를 관리할 수 있게 해줍니다.
OnChanged.AddUObject(MyStudent1, &UMyStudent::GetNotification);
코드는 OnChanged
델리게이트에 MyStudent1
인스턴스의 GetNotification
함수를 추가하는 것입니다. 이렇게 함으로써, 나중에 OnChanged
델리게이트가 브로드캐스트 될 때 GetNotification
함수가 자동으로 호출되게 됩니다.
델리게이트는 이벤트 발생 시 연결된 함수들을 호출하는 역할을 합니다. 델리게이트에 함수를 등록하는 것이 바로 AddUObject
와 같은 메서드를 활용하는 것이고, 반면 Broadcast
는 델리게이트에 등록된 모든 함수를 실행하는 것입니다. 따라서 CourseInfo->OnChanged.Broadcast();
로 작성하면, OnChanged
에 등록되어 있는 모든 함수가 호출됩니다.
“CourseInfo->OnChanged.Broadcast(MyStudent1, &UMyStudent::GetNotification);“처럼 사용하지 않는 이유는, 이미 OnChanged
델리게이트에 MyStudent1
인스턴스의 GetNotification
함수가 등록되어 있기 때문입니다. 즉, 브로드캐스트는 한 번의 호출로 델리게이트에 연결된 모든 함수를 실행합니다.
관련 질문을 다음 URL에서 확인해 보실 수 있습니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
감사합니다 이해되었습니다.
뭐든 등록하기만하면 Broadcast함수가
싸그리 다 호출해준다는거네요