inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해

8강 아이템 시스템

FTakeItemDelegateWrapper에 대한 질문입니다.

124

이경택

작성한 질문수 7

0

안녕하세요 교수님.

델리게이트를 리스트에 담아주기 위해 구조체를 이용해서 감싸주었는데, 델리게이트만으로는 리스트에 담는것이 어려운 것인지 궁금해 질문남깁니다.

예를 들어, 래퍼 없이 직접 TakeItemActions을 TArray<FOnTakeItemDelegate>로 정의하고

TakeItemActions.Add(FOnTakeItemDelegate::CreateUObject(this, &AABCharacterBase::EquipWeapon));
TakeItemActions.Add(FOnTakeItemDelegate::CreateUObject(this, &AABCharacterBase::DrinkPotion));
TakeItemActions.Add(FOnTakeItemDelegate::CreateUObject(this, &AABCharacterBase::ReadScroll));

void AABCharacterBase::TakeItem(UABItemData* InItemData)
{
	if (InItemData)
	{
		TakeItemActions[(uint8)InItemData->Type].ExecuteIfBound(InItemData);
	}
}

와 같이 래퍼 없이 사용하는 것입니다.

이에는 문제가 없을까요?

 

unreal-engine ue-blueprint 언리얼-c++

답변 2

0

이득우

비슷한 질문이 예전에 있었는데요, UPROPERTY때문에 그렇습니다.
https://www.inflearn.com/community/questions/1275174

0

이경택

미처 이전 질문을 확인 못했네요. 감사합니다!

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. 이경택님.

FTakeItemDelegateWrapper 구조체를 사용하지 않고 TArray<FOnTakeItemDelegate>를 직접 사용하는 방법에 대해 질문해주셨습니다. 기본적으로 언리얼 엔진의 델리게이트는 C++ 함수 포인터와 비슷하지만, 델리게이트 자체만으로는 메모리 관리나 직렬화의 어려움이 있을 수 있습니다.

주요 고려사항

  1. 메모리 관리: 델리게이트는 함수 호출을 추적하지만, 배열이나 다른 컨테이너에 직접 저장할 경우 메모리 관리 이슈가 발생할 수 있습니다. 특히, 델리게이트가 바인딩된 객체가 파괴되면 델리게이트도 적절히 관리해야 합니다.

  2. 데이터 직렬화: 래퍼 구조체를 사용하면 직렬화 및 네트워크 동기화 작업에서 더 나은 유연성을 제공할 수 있습니다. UPROPERTY와 같이 사용하려면 델리게이트를 래퍼에 감싸는 것이 추천됩니다.

  3. 가독성과 유지보수성: 래퍼 구조체를 사용하면 더 많은 메타데이터를 델리게이트와 함께 저장할 수 있어 코드의 가독성과 유지보수성이 상승할 수 있습니다.

비슷한 질문과 답변이 과거에 있었습니다. 여기서 더 많은 정보를 확인하실 수 있습니다:

이 답변이 도움이 되길 바라며, 추가적으로 궁금하신 점이 있다면 언제든지 질문해 주세요. 지식공유자께서도 빠른 시일 내에 답변해주시리라 믿습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

무한맵 제작과정중에 GetWorld 가 Nullptr 을 반환합니다.

0

46

2

12강 행동트리에서 질문이 있습니다.

0

52

1

위젯 사이즈랑 위치 질문드려요.

0

81

3

행동트리의 데코레이션 관련하여 질문이 있습니다.

0

94

3

VS 2026 의 문제일까요?

0

488

2

에셋참조 블루프린트질문

0

67

2

애님 몽타주 콤보 관련질문

0

70

2

ThirdPerson CDO 에러가 생깁니다.

0

95

3

캐릭터가 움직이지 않습니다.

0

181

4

쿠킹 폴더 지정시 , Item 이외에는 지정하지 않는지 궁금합니다.

0

62

2

TSoftObjectPtr 를 사용했음에도, 메모리에 로드 됩니다.

0

94

2

7강에 나오는 생성자에 대해서 궁금합니다.

0

78

2

6강을 마무리하며 트레이스 채널 을 이해하지 못했습니다.

0

73

2

3강을 마무리 하며, 카메라가 움직이지 않습니다.

0

71

2

Use Controller Rotation 옵션값이 궁금합니다.

0

83

2

3강 입력 시스템 적용 중, 5.6 버전은 입력 매팅이 2개 입니다.

0

64

2

PlayerController 에 대헤 제가 잘못 이해한 것 같습니다.

0

78

2

13강 UpdateStat 부분에서 문제를 겪고 있습니다.

0

63

2

BP_PlayerController의 CustomEvent노드 이유가 궁금합니다.

0

64

1

콤포넌트 포인터 선언시 TObjectPtr<>과 UStaticMeshComponent* 차이점

0

72

2

CharacterMovementComponent의 RotationRate관련해서 질문이 있습니다.

0

114

2

언리얼 공부방법에 대해 질문드립니다.

0

87

2

4강 에서 이상한 그림자가 남습니다.

0

46

1

2강에서 카메라 회전안되시는분 참고

2

91

2