inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템

5강 : 공격 판정 시스템의 구현

언리얼 기본 제공 태스크 UAbilityTask_WaitTargetData

518

themoon007

작성한 질문수 98

0

언리얼이 기본제공하는 태스크들이 정말 많아서 좀 둘러보다가 저희가 만든 AT_Trace랑 비슷한 "UAbilityTask_WaitTargetData"라는 게 있어서 좀 살펴봤는데요.

 

Activate()에 있는 구현 내용이 중복되는 BeginSpawningActor()FinishSpawningActor() 함수가 있는데 임의로 블루프린트에서 이 태스크를 실행해보니 Activate()가 실행이 안되고 이 두 함수가 실행되는 걸 봤습니다.

이런 식으로 그냥 실행해봤는데요.

사실 코드에선 어빌리티에서 CreateTarget()을 하고 ReadyForActivation()까지 호출해야 AT의 Activate()가 실행되는데 블루프린트에서는 이 노드 호출만으로 어떻게 AT가 실행까지 되는지도 잘 모르겠습니다.

 

거기에 UAbilityTask_WaitTargetData 처럼 Activate() 대신에 BeginSpawningActor()/FinishSpawningActor() 가 실행되는 이유도 알고 싶습니다....

이 두 함수 존재의 설명은 엔진 주석에 나와있어서 어느정도 파악이 됐는데 문제는 코드에서든 블루프린트에서든 호출되는 조건을 잘 모르겠습니다...

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

답변 1

0

이득우

C++과 블루프린트 API는 비슷하면서도 API 호출 체계가 다릅니다.
예를 들어 C++ 은 Activate 함수에서 ReadyForActivation을 반드시 호출해야 하지만 블루프린트에서 ReadyForActivation은 언급한 함수의 구현부에 이미 내장되어 있지요.
블루프린트는 기획자 용으로 만들어지다보니 에픽이 간편하게 호출하도록 설계했다고 생각하면 될 것 같아요.

0

themoon007

여러가지 테스트를 해보았는데요.

주석 설명을 자세히 보니 BeginSpawningActor()와 FinishSpawningActor()를 사용하려면 매개변수 이름을 강조하길래 이게 블루프린트 API 기능인지, 리플렉션 기능인지는 잘 몰라도.

그냥 태스크 생성 Static 함수의 매개변수 이름을 동일하게 맞추니까 블루프린트에서 ABAT_Trace 를 호출했을 때, Activate() 대신 BeginSpawningActor()와 FinishSpawningActor() 가 호출됩니다.

반드시 Class 라는 이름이어야 하며, 반대로 Class라는 이름으로 지었으면 신기하게 BeginSpawningActor()와 FinishSpawningActor() 가 반드시 정의되 있어야 하는 듯 합니다. (없으면 없다고 블루프린트 컴파일 에러납니다..)

 

이 방식을 제공하는 이유가 기존 Activate()에서 타겟 액터를 스폰하는 방식은 "it would not be possible to pass in dynamic "ExposeOnSpawn" actor properties." 라고 하는데 이게 혹시 무슨 말인지 알 수 있을 까요....

BeginSpawningActor()와 FinishSpawningActor() 를 사용하면서 얻는 이점이 무엇인지 설명이 이해가 잘 가지 않습니다....

 

마지막 질문은 무슨 뜻인지 알아냈습니다. 감사합니다.

OnInterruptedCallback()으로 몽타주가 중간에 취소될 경우 CancelAbility를 호출하는게 맞을까요 ?

0

38

1

HasMatchingGameplayTag 역활이 조금 이해가 안갑니다.

0

45

1

캐릭터 스탯 초기 설정 방법 질문

0

87

2

언라얼 공식 홈페이지 튜토리얼 강의에 질문 있습니다

0

85

2

StartAbility, StartInputAbility 둘 다 GiveAbility를 호출해야하나요?

0

77

2

AnimNotify 구현 질문

0

104

2

[6강] ShowDebug에서 Attributes for avater가 변하지 않아요..

0

79

2

4강에서 콤보 공격시 다음 공격을 할 경우 ActivateAbility가 자동으로 발동되는 이유

0

113

2

9강 44:59 부분에서 질문이 있습니다.

0

79

2

8강 24:22 CurrentAttributeSet 질문입니다.

0

66

2

ASC 에서 AttributeSet 함수에 대한 mutable 반환 함수가 없는 이유

0

86

2

SetupGASInputComponent 함수 호출위치가 이해가안갑니다.

0

145

3

[GAS] Player State에 대해 궁금한 점이 있습니다.

0

135

2

AnimNotify를 GA에서 받는방법이 있을까요?

0

85

2

ABP의 skeleton 오류

0

116

1

장판스킬을 만들때 콜리전설정

0

175

2

어빌리티의 쿨다운 GameEffect에 대하여

0

262

2

GAS 구조로 멀티 플레이 게임을 제작할려고 하는데요

0

228

2

5.4버전 기준으로 Remove Gameplay Effect With Tags가 안 보입니다.

0

283

3

8강의 수업 내용들 중 이해가 잘 안가는 부분들이 있습니다.

0

210

2

7강 GE로 NonPlayer의 어트리뷰트셋 값을 초기화시키는 것에 질문이 있습니다.

0

111

2

7강 정리했는데 검토부탁드려요

0

126

1

5강 정리해봤는데 검토부탁드립니다.

0

135

2

4강의 CreateTask 함수 질문입니다,

0

158

2