해결된 질문
작성
·
518
·
수정됨
0
섹션1의 캐릭터 컨트롤 설정 파트에서 궁금한 부분이 있어 질문 드립니다.
강의 영상에서는 DataAsset 부분(15:15 ~ 16:10)에서 IMC 설정을 하지 않고 생략 되는 것으로 알고 있습니다.
(때문에 Github 소스 자체에는 문제가 없습니다. 다만 영상과 같이 DataAsset의 IMC를 None으로 두면=영상 내용을 그대로 따라한다면 질문1 질문2 과 같은 문제가 발생합니다.)
이를 해결하기 위해서 위의 링크들과 같이 에디터 상에서 DataAsset에 직접 IMC를 지정하는 방법도 있지만, DataAsset을 불러오는 김에 IMC도 코드를 이용해서 추가 하는 것이 좋지 않을까? 싶어 코드를 약간 변형해봤습니다.
아래는 ABCharacterBase.cpp
의 소스코드 일부 입니다. 기존 소스코드에 헤더를 추가한 상태를 기준으로 48번 Line부터 내용을 추가 했습니다.
#include "InputMappingContext.h" // 헤더 파일 추가
(중간 생략...)
// DataAsset 탐색
static ConstructorHelpers::FObjectFinder<UABCharacterControlData> ShoulderDataRef(TEXT("/Script/ArenaBattle.ABCharacterControlData'/Game/ArenaBattle/CharacterControl/ABC_Shoulder.ABC_Shoulder'"));
if (ShoulderDataRef.Succeeded())
{
// DataAsset에 IMC 삽입
static ConstructorHelpers::FObjectFinder<UInputMappingContext>ShoulderInputMappingContextRef(TEXT("/Script/EnhancedInput.InputMappingContext'/Game/ArenaBattle/Input/IMC_Shoulder.IMC_Shoulder'"));
if(ShoulderInputMappingContextRef.Succeeded())
{
UInputMappingContext* ShoulderInputMappingContext = ShoulderInputMappingContextRef.Object;
ShoulderDataRef.Object->InputMappingContext = ShoulderInputMappingContext;
}
CharacterControlManager.Add(ECharacterControlType::Shoulder, ShoulderDataRef.Object); // 기존 DataRef의 InputMappingContext는 Default = None으로 설정되어 있었음
}
// DataAsset 탐색. Quarter <-> Quater 오타 주의
static ConstructorHelpers::FObjectFinder<UABCharacterControlData> QuarterDataRef(TEXT("/Script/ArenaBattle.ABCharacterControlData'/Game/ArenaBattle/CharacterControl/ABC_Quarter.ABC_Quarter'"));
if (QuarterDataRef.Succeeded())
{
// DataAsset에 IMC 삽입하는 과정
static ConstructorHelpers::FObjectFinder<UInputMappingContext>QuarterInputMappingContextRef(TEXT("/Script/EnhancedInput.InputMappingContext'/Game/ArenaBattle/Input/IMC_Quarter.IMC_Quarter'"));
if(QuarterInputMappingContextRef.Succeeded())
{
UInputMappingContext* QuarterInputMappingContext = QuarterInputMappingContextRef.Object;
QuarterDataRef.Object->InputMappingContext = QuarterInputMappingContext;
}
CharacterControlManager.Add(ECharacterControlType::Quarter, QuarterDataRef.Object);
}
위와 같은 방식들로 IMC를 DataAsset에 추가해줬을 때 별다른 문제가 없다면,
해당 섹션의 강의 정보에 공유 해주실 수 있으신가요?!
아무 생각 없이 코드만 생각하다가 여기서 쳇바퀴 열심히 돌렸습니다 ㅎㅎ;;