인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

임성우님의 프로필 이미지

작성한 질문수

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

4강 : 캐릭터 콤보 공격의 구현

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

해결된 질문

작성

·

43

0

image.png

CreateTask 함수가 C++과 다르게 BP에서는 호출 시 내부에서 자동으로

알아서 ReadyForActivation함수를 호출해주네요.

C++에서는 ReadyForActivation함수 호출 전에 맴버변수들을 초기화할 수 있지만

BP에서는 이것이 제한될까요?

 

답변 2

0

이득우님의 프로필 이미지
이득우
지식공유자

네 블루프린트라면 클래스 멤버 기본값이 다른 블루프린트를 여러개 만들어 타입으로 처리하는 것이 더 효율적이지 않나 생각되네요

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. 임성우님.

블루프린트에서 CreateTask 함수의 동작이 C++과 다르게 느껴지는 이유는 언리얼 엔진의 게임플레이 어빌리티 시스템의 블루프린트 기능이 상당히 추상화되어 있기 때문입니다. C++에서는 ReadyForActivation()을 명시적으로 호출해야 하지만, 블루프린트에서는 노드를 사용하여 태스크를 생성할 때 자동으로 호출됩니다.

블루프린트에서의 동작 원리

  1. 자동 호출: 블루프린트 노드인 JumpAndWaitForLanding는 생성 시 이미 ReadyForActivation()을 포함한 모든 준비 과정을 자동으로 처리합니다. 이는 블루프린트 사용자의 편의를 위한 설계로, ‘기획자 친화적’으로 설계되었습니다.

  2. 초기화 제한: C++에서는 ReadyForActivation() 호출 전에 다양한 초기화를 수행할 수 있지만, 블루프린트에서는 노드가 자동으로 이 과정을 진행하기 때문에 사용자 정의 초기화가 제한될 수 있습니다. 따라서 블루프린트는 주로 논리 플로우에 중점을 두고, 복잡한 초기화 과정은 C++로 구현하는 것이 일반적입니다.

관련된 유사 질문과 답변

아래 링크에서는 블루프린트와 C++ 간의 태스크 생성 및 수행 과정에서의 차이점에 대한 설명이 포함되어 있습니다.

블루프린트의 자동화된 과정과는 별개로, 직접 C++에서 더 많은 제어를 원하신다면 해당 코드를 C++로 구현하고 블루프린트를 통해 호출하는 방식도 고려해 보시길 권장합니다.

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