추가_9.22
- 해당 현상은 캐릭터 데이터 에셋을 클라에 복제하지 않아 발생한 문제 따라서 아래 있는 내용은 따로 사용하지 않음.
작업 이유
- 호스트를 제외한 플레이어의 캐릭터데이터가 아래 코드에서 설정되지 않는 문제 발견
- 해당 코드는 ATFDGameMode::SpawnDefaultPawnFor_Implementation 부분
- 현재 Dev에는 경찰을 기반으로 한 데이터 에셋이 설정되어있어 경찰 어빌리티가 추가됨.
if (PState && TFDPawn)
{
FGameplayTag Tag = PState->GetTeamTag();
if (Tag == TAG_Team_Thief)
{
TFDPawn->CharacterData = RuleData->ThiefDataAsset;
GetGameState()->ThiefPlayerStateArray.Add(PState);
}
else if (Tag == TAG_Team_Cop)
{
TFDPawn->CharacterData = RuleData->PoliceDataAsset;
GetGameState()->PolicePlayerStateArray.Add(PState);
}
}
- 해당 데이터 에셋을 설정을 해제할 시 아래에서 크러쉬가 발생
- 데이터에셋이 설정되지 않아 발생하는 오류.
void ATFDPlayerController::AcknowledgePossession(APawn* InPawn)
{
Super::AcknowledgePossession(InPawn);
if (IsLocalPlayerController())
{
if (ATFDCharacterBase* CB = Cast<ATFDCharacterBase>(InPawn))
{
if (UEnhancedInputLocalPlayerSubsystem* Subsystem =
ULocalPlayer::GetSubsystem<UEnhancedInputLocalPlayerSubsystem>(GetLocalPlayer()))
{
if (CB->CharacterData)
{
if (CB->CharacterData->JobMappingContext)
{
Subsystem->AddMappingContext(CB->CharacterData->JobMappingContext, 0);
}
}
}
//********직업에 따른 능력 입력 바인딩************
if (UEnhancedInputComponent* EnhancedInputComponent = Cast<UEnhancedInputComponent>(InputComponent))
{
if (CB->CharacterData)
{
for (auto& Action : CB->CharacterData->Actions)
{
EnhancedInputComponent->BindAction(Action.InputAction, ETriggerEvent::Started, this, &ATFDPlayerController::JobAbility, Action.Tag);
}
}
}
}
}
}
해결 시도 1
- 게임이 시작하는 부분에서 매핑 시도
- ATFDPlayerController::HandleMatchInProgress() 부분은 게임이 실제로 시작 되었을 때 실행되는 함수. 따라서 테스트로 해당 부분에 매핑 함수 추가.