관리 메뉴

Mini

[UE5] 인터페이스에 값대입하는 방법 본문

UE5

[UE5] 인터페이스에 값대입하는 방법

Mini_96 2024. 5. 28. 00:43

1. 기존

Pointer* 타입일때는 그냥 = 로 대입하면됬다.

ThisActor = Cast<IEnemyInterface>(CursorHit.GetActor());

 

2. 개선

IE의 하위객체로 제한하기위해 타입을 바꿧다.

void CursorTrace();
	TScriptInterface<IEnemyInterface> LastActor; //가장최근에 가리킨 적
	TScriptInterface<IEnemyInterface> ThisActor; //현재커서위치가 가리키는 적

문제 : = 연산자가 안먹힘

 

3. 해결

i) HitActor->Implements<UEnemyInterface>()는 HitActor가 UEnemyInterface를 구현하는지 확인합니다.

ii) ThisActor.SetObject(HitActor);는 TScriptInterface의 UObject 부분을 설정합니다.

  • ThisActor.SetInterface(Cast<IEnemyInterface>(HitActor));는 TScriptInterface의 인터페이스 부분을 설정합니다.
TScriptInterface<IEnemyInterface> ThisActor; // 현재 커서 위치가 가리키는 적

AActor* HitActor = CursorHit.GetActor();
if (HitActor && HitActor->Implements<UEnemyInterface>())
{
    ThisActor.SetObject(HitActor);
    ThisActor.SetInterface(Cast<IEnemyInterface>(HitActor));
}
else
{
    // Handle the case where the actor does not implement the interface
    ThisActor = nullptr;
}

즉,

1. 구현확인

2. 오브젝트부분설정

3. 인터페이스부분 설정

하면된다.

 

https://github.com/DongHoonYu96/GameplayAbilitySystem_Aura/commit/ce89bd8ad3061acafb9d1e941dfa63deb13fc21d

 

fix : 인터페이스 타입에 값대입 수정 · DongHoonYu96/GameplayAbilitySystem_Aura@ce89bd8

Bisu96 committed May 27, 2024

github.com