728x90
문제
상황에 따라 다른 Input Action Map을 사용하려고 했다.
예를 들면,
- 게임 중 UI 여는 키를 눌렀을 땐 UI 조작에 대한 Action Map으로 변경
- UI를 닫았을 땐 게임플레이에 대한 Action Map으로 변경
Input System의 Input Action Asset에 두 가지 Action Map(Game, UI)을 만들어서 전환하여 사용했다.
PlayerInput playerInput; // PlayerInput 컴포넌트
bool currentActionMapIsUI = false; // 현재 Action Map이 UI인가?
public void OnInventoryAction(InputAction.CallbackContext context)
{
if(context.performed)
{
if(currentActionMapIsUI)
{
playerInput.SwitchCurrentActionMap("Player");
currentActionMapIsUI = false;
}
else
{
playerInput.SwitchCurrentActionMap("UI");
currentActionMapIsUI = true;
}
}
}
하지만 에디터에서 플레이하면 처음 InventoryAction에 해당하는 키를 한 번만 눌러도 이 함수가 두 번 호출되는 문제가 발생했다. 이후에는 제대로 한 번씩만 호출됐다.
InputAction Warrior 샘플에서도 Pause했을 땐 UI인풋으로, Resume했을땐 게임 인풋으로 전환하는 방식을 위의 코드와 똑같이 사용하고 있다. 하지만 이 샘플은 이런 문제가 없고 잘 작동하길래 뭐가 달라서 잘되는 건지 한참 찾아봤는데...
원인
Project-wide Actions에 할당해줬던 Input Action Asset이 문제를 일으키는 듯 한데, 자세한 원인은 레퍼런스 페이지에도 안 나오고... 모르겠음.
해결

Project-wide Actions에 할당되어있는 Input Action Asset 참조를 지운다.
액션 에셋을 하나만 사용할 경우 권장사항이 Project-wide로 설정해주는 것으로 알고 있는데, 오히려 하면 이런 문제가 발생한다...;
참고
728x90