Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 유니티 리소스매니저
- 유니티 Vector3
- 유니티
- 유니티 Rotate
- ML-Agents
- c++ 문자열 자르기
- 유니티 ResourceManager
- Quaternion.Euler
- 소스코드 줄번호
- 알고스팟
- Mathf.Clamp
- c++
- 깊이 우선 탐색
- LayerMask
- 너비 우선 탐색
- 유니티 시야 가림
- 유니티 Collision
- 코드블럭 테마
- LFS
- 이진트리
- 유니티 오브젝트 풀링
- 유니티 머신러닝
- LookRotation
- InputManager
- git-lfs
- 오브젝트 풀링
- unity
- eulerAngles
- Raycast
- 유니티 InputManager
Archives
- Today
- Total
무민은귀여워
델리게이트 - Delegate 본문
반응형
델리게이트는 넓은 의미로 본다면 특정 객체가 해야 할 로직을 다른 객체가 대신 처리할 수 있도록 만드는 보편적인 설계의 개념을 의미한다.
언리얼 엔진의 델리게이트는 A객체가 B객체에 작업 명령을 내릴 때 B 객체에 자신을 등록하고 B의 작업이 끝나면 이때 A에게 알려주는 설계 방식을 의미한다.
A에서 B가 요구하는 형식으로 멤버 함수를 만들면 이를 B에 등록할 수 있고, B가 특정 상황이 될 때 B는 미리 등록해둔 A의 멤버 함수를 호출해주는 방식으로 동작한다.
언리얼에서 델리게이트는 C++ 객체에만 사용할 수 있는 델리게이트와 블루프린트 객체가 모두 사용할 수 있는 델리게이트로 나뉜다. 블루프린트 오브젝트는 멤버 함수에 대한 정보를 저장하고 로딩하는 직렬화(Serialization) 매커니즘이 들어있기 때문에 일반 c++ 언어가 관리하는 방법으로 멤버 함수를 관리할 수 없다. 그래서 블루프린트와 관련된 c++ 함수는 모두 UFUNCTION 매크로를 사용해야 한다. 이렇게 블루프린트 객체와도 연동하는 델리게이트를 언리얼 엔진에서는 다이내믹 델리게이트라고 한다.
아래는 HUD와 인벤토리 위젯간의 델리게이트 예이다. (많이 생략됨)
1
2
3
4
5
6
7
8
9
|
// InventoryWidget.h
UFUNCTION()
void OnClickCloseBtn();
UPROPERTY(meta = (BindWidget), BlueprintReadWrite)
UButton* CloseBtn;
FCloseInven CloseInvenDelegate;
|
cs |
1
2
3
4
5
6
7
8
9
10
11
|
// InventoryWidget.cpp
void UInventoryWidget::NativeConstruct()
{
CloseBtn->OnClicked.AddDynamic(this, &UInventoryWidget::OnClickCloseBtn);
}
void UInventoryWidget::OnClickCloseBtn()
{
CloseInvenDelegate.ExecuteIfBound();
}
|
cs |
1
2
3
4
|
// GameHUD.h
UPROPERTY(meta = (BindWidget), BlueprintReadWrite)
UInventoryWidget* InventoryUI;
|
cs |
1
2
3
4
5
6
|
// GameHUD.cpp
void UGameHUD::NativeConstruct()
{
InventoryUI->CloseInvenDelegate.BindUObject(this, &UGameHUD::ShowMenuWidget);
}
|
cs |
반응형
'IT > Unreal Engine 4' 카테고리의 다른 글
시퀀스 재생 중 hud 출력 안하기 ( joystick 버그 ) (0) | 2019.11.13 |
---|---|
언리얼 4 c++ 블루프린트에서 애셋경로(이미지)로 이미지 생성하기 (0) | 2019.09.26 |
메모) Locomotion Based Blending (0) | 2019.09.10 |
메모) 참고 블로그 (0) | 2019.09.10 |
언리얼엔진4 - 블렌드 모드 (0) | 2019.09.10 |
Comments