ASC nullptr 문제
자꾸 UHakEquipmentInstance* FHakEquipmentList::AddEntry(TSubclassOf<UHakEquipmentDefinition> EquipmentDefinition)에서
UHakAbilitySystemComponent* ASC = GetAbilitySystemComponent();
check(ASC);
{
for (const TObjectPtr<UHakAbilitySet> AbilitySet : EquipmentCDO->AbilitySetsToGrant)
{
AbilitySet->GiveToAbilitySystem(ASC, &NewEntry.GrantedHandles, Result);
}
}이쪽, GiveToAbilitySystem에서 ASC가 nullptr이라면서 터지길래 열받아서 ASC를 아래처럼 플레이어스테이트에서 직접 가져왔더니 문제가 해결되었습니다.
// 1. OwnerComponent의 소유자 (보통 Character일 것)
ACharacter* OwnerCharacter = Cast<ACharacter>(OwnerComponent->GetOwner());
// 2. Character의 PlayerState 가져오기
AHakPlayerState* HakPlayerState = Cast<AHakPlayerState>(OwnerCharacter->GetPlayerState());
// 3. PlayerState에서 ASC 가져오기
UHakAbilitySystemComponent* ASC = HakPlayerState->GetHakAbilitySystemComponent(); // 혹은 직접 변수 접근
문제는 아래 함수인 것 같은데.
UHakAbilitySystemComponent* FHakEquipmentList::GetAbilitySystemComponent() const
{
check(OwnerComponent);
AActor* OwningActor = OwnerComponent->GetOwner();
// GetAbilitySystemComponentFromActor를 잠시 확인해보자:
// - EquipmentManagerComponent는 AHakCharacter를 Owner로 가지고 있다
// - 해당 함수는 IAbilitySystemInterface를 통해 AbilitySystemComponent를 반환한다
// - 우리는 HakCharacter에 IAbilitySystemInterface를 상속받을 필요가 있다
return Cast<UHakAbilitySystemComponent>(UAbilitySystemGlobals::GetAbilitySystemComponentFromActor(OwningActor));
}이 코드가 제대로 작동 안 하고 null을 주는 것 같은데 왜 그런걸까요?
HakCharacter에서 제대로 IAbilitySystemInterface 구현했고, 강의 코드 제대로 따라갔다고 생각하는데...
답변 1
0
이런 경우는 간단해서 3가지로 나눠서 디버깅 해보면 됩니다.
1. OwingActor 변수에 nullptr 여부
2. Cast 여부
3. GetAbilitySystemComponentFromActor 여부
Reticle이 안나옵니다.
0
17
1
AddGameFrameworkComponentReceiver vs AddExtensionHandler
0
25
0
B_TeleportToUserFacingExperience가 추가로 생성되지 않습니다.
0
58
2
.
0
60
1
SpawnDefaultPawnAtTransform_Implementation이 호출되지 않습니다.
0
59
2
Input Subsystem 에서 오류가 발생합니다
0
67
1
7강 GameMode와 Modules관련 질문드립니다.
0
57
1
LyraFrontEnd 에서 로딩화면에서 넘어가지 않는 원인이 뭔지 질문드립니다.
0
83
2
리소스 이주했는데 안보이는데 어떻게 해야하나요?
0
88
3
TakeFromAbilitySystem 함수에서 Array 에 대한 remove 는 수행하지 않나요?
0
59
1
CircumferenceMarkerWidget의 bReticleCornerOutsideSpreadRadius 초기화 관련
0
65
1
Pawn 교체, Possess 후 위젯이 이전 값(상태)을 잘못 보여줄 때 처리법이 궁금합니다.
0
76
2
Pawnextension#3 9:19 질문이 있습니다.
0
64
2
Experience 재시작
0
81
2
Log 파트에서 Subtitution Macro Call 를 사용하는 방법이 무엇인가요?
0
84
2
설치후 빌드하는데 에러가 발생하고 인텔리센스도 잘 활성화되지 않습니다.
0
205
1
FPerContextData에 대해 질문이 있어요
0
51
2
OnGameFeatureActivating와 WorldContext관해 질문 있습니다.
0
68
1
GameFeature Action 및 Common UI Widget 생성 관련 질문
0
82
1
가비지컬렉션 관련 질문있습니다.
0
96
3
Travel관련해서 질문 있습니다.
0
61
1
IMC가 먹통이에요
0
90
2
PawnExtension #3 에서 말한 라이라 공식문서가 뭔가요?
0
66
1
PawnExtensionComponent::SetPawnData에서의 CheckDefaultInitialization
0
58
1





