TIL

[TIL] 내일배움캠프_ Unity InputSystem, params

Hwone 2023. 10. 18. 22:01

InputSystem

이번 팀 프로젝트는 미니게임천국을 바탕으로 만든 게임이어서 각 Scnene마다 Player의 필요한 입력 처리가 제각각이다 

예를들면 어느 미니게임에서는 공격이 필요하지만 다른 미니게임에서는 공격할 필요가 없는 게임들이 있다 

하지만 Player의 입력 처리는 공유되므로 공격이 필요없는 미니게임에서 공격 버튼을 누르면 공격을 하는 애니메이션이 저장된다 

이를 막기 위해 Player의  InputSystem -> ActionMaps -> Actions 값을 활성화 혹은 비활성화를 따로 진행하여 각 게임마다 입력값을 분리시켰다 

 public void EnableActions(params InputActions[] actionNames)
 {
     Input.OnDisable(); 
     foreach (InputActions actionName in actionNames)
     {
         InputAction action = Input.InputActions.FindAction(actionName.ToString());
         if (action != null)
             action.Enable();
         else
             Debug.LogError($"{action} 는 존재하지 않습니다."); 
     }
 }

params

: 가변 길이의 매개변수 배열을 받을 수 있게 해준다 즉, 메서드를 호출할 때 배열을 만들지 않고 여러 값을 전달할 수 있도록 해준다 (단, 1차원 배열만 사용할 수 있다) 

 

장점은 코드의 가독성을 향상시키고 메서드 호출을 더 간편하게 만들어준다

단점은 배열이 내부적으로 생성되므로 메모리 할당이 발생하여 이를 반복 호출하는 상황에서는 성능에 영향을 줄 수 있다

 

위에서 각 게임마다 필요한 입력의 개수가 전부 달라서 어떻게 매개변수로 넣어주면 좋을까 생각하다가 찾아낸 키워드이다 

 

하지만 자주 사용하지는 않을 것 같다..아무래도 메모리와 성능이 중요한 게임에서는 적합하지 않은 것 같다