Game Develop

[UE5] EnhancedInput에서 BindAction할 때 추가 매개변수 넘기기 가능하다. 본문

카테고리 없음

[UE5] EnhancedInput에서 BindAction할 때 추가 매개변수 넘기기 가능하다.

MaxLevel 2025. 4. 3. 15:45

 

Enhanced Input을 이용해서 키입력을 받는것을 C++로 구현하면, 아래와 같이 BindAction을 호출 할 것이다.

 

EIC->BindAction(m_InAir_InputActions["NormalAttack_InAir"], ETriggerEvent::Triggered, skillComponent, &UMainPlayerSkillComponent::NormalAttack_InAir);

 

보통은 저렇게 매개변수가 없는 함수를 바인딩을 하고, 그렇게 해야되는줄만 알고있지만 사실 매개변수있는 함수도 바인딩이 가능하다.

 

다만, 모든 매개변수는 아니고 POD타입의 데이터만 매개변수로 가능하다.

여기서 POD란 Plain Old Data의 약자인데 쉽게 말하자면 단순한 데이터타입을 의미하고, 좀 더 정확히 말하면 비트수준의 연산이 가능한 bool이나 int형 따위를 의미한다.

그러니 만약 ActivateStrikeAttack이라는 int형을 매개변수로 가지는 함수가 있고, 이걸 바인딩하고싶으면 아래처럼 하면 된다.

EIC->BindAction(m_OnGround_InputActions["SetModifierKeyInput_StrikeAttack"], ETriggerEvent::Started, skillComponent, &UMainPlayerSkillComponent::ActivateStrikeAttack, 3);

 

 

 

 

나같은경우는 FName을 넘기고싶었는데... 이건 내부적으로 복잡한 언리얼의 데이터타입이기때문에 컴파일이 안됐다...

스킬 하나하나마다 일일이 함수만들고 바인딩하기 싫어서 어떻게든 우회하려했건만 쉽지않다.

 

그리고 참고로 원시타입인 int, bool 넘기기는 되는데 uint8같은 typedef로 사용자가 임의로설정한 값들은 안된다.