Input Component 혹은 Character Movement Component에 대한 별도의 사용자 정의 함수 및 변수들을 추가하기 위해 이들을 상속하는 하위 클래스를 선언할 수 있습니다. 하지만, 미리 정의된 액터 컴포넌트들을 두고 캐릭터 객체에 이들의 하위 컴포넌트들을 추가적으로 붙이기 애매한 상황.
#2. 해결
1. 생성자 변경
UCLASS()
class AGEOFWOLVES_API APlayerCharacter : public ACharacterBase
{
public:
// Sets default values for this character's properties
APlayerCharacter(const FObjectInitializer& ObjectInitializer);
//...
};
기존의 생성자(인자가 없는)를 사용하지 않고, FObjectInitializer 유형의 참조를 인자로 하는 생성자를 활용합니다.
이미 상위 클래스(ACharacter)에서 특정 Actor Component(Character Movement Comp, Input Comp)를 Subobject로 설정한 경우, 초기화 리스트를 활용하여 이 친구들의 하위 클래스로 타입을 변경해 줍니다. 코드 문법이 다소 낯설지만, 이렇게 작성해도 에러 없이 정상적으로 동작합니다.
3. 결과
APlayerCharacter의 블루프린트 클래스를 살펴보면, 위 처럼 Character Movement Component가 Base Character Movement Component(사용자 정의 하위 클래스)로 변경된 것을 확인할 수 있습니다!