이번 포스트에서는 Player Input 컴포넌트를 통해 Input System을 사용하는 4가지 방법 중에서
첫번째로 Send Messages를 알아보겠습니다.
Player Input 컴포넌트를 추가한 후에,
Behavior 항목에서 Send Messages로 설정하였습니다.
위와 같이 설정한 Input Action Asset - Action Map 아래의 기본적인 Input Action들 외에도
추가적으로 만든 Input Action들이 보이는 것을 확인할 수 있습니다.
Send Messages 방식은 다음과 같이 동작합니다.
입력 이벤트에 따라 호출할 함수의 이름 규약은 On + Input Action명으로 지어집니다.
이때, 내부적으로 GameObject.SendMessages 메서드를 통해
PlayerInput 컴포넌트가 부착된 GameObject에게 콜백 함수의 수행 결과를 전달합니다.
그리고 메세지의 전달은 바인딩되어 있는 키를 누르는 경우에만 발동합니다.
이제, 실제로 Send Messages 방식을 통해 입력을 처리해보도록 하겠습니다.
1) PlayerInput 컴포넌트 - SendMessages 방식을 통한 입력 처리
코드는 다음과 같습니다.
public class SendMessaages : MonoBehaviour
{
[SerializeField]
private float speed;
private Rigidbody2D rigidbody2D;
private Vector2 direction;
private void Awake()
{
rigidbody2D = GetComponent<Rigidbody2D>();
}
private void FixedUpdate()
{
// 물리와 관련된 RigidBody의 경우 Update 보다는
// Update 이후 프레임을 처리하는 FixedUpdate 에서 수행하는 것이 좋음
rigidbody2D.velocity = new Vector2(direction.x * speed, rigidbody2D.velocity.y);
}
// Send Messages 설정에 사용하기 위한 콜백함수 이름 규약에 맞춰 이름을 작성
private void OnPress()
{
Debug.Log("Press");
}
// Send Messages 설정에 사용하기 위한 콜백함수 이름 규약에 맞춰 이름을 작성
private void OnMoveHorizontal(InputValue value)
{
direction.x = value.Get<float>();
}
}
Send Messages 방식을 사용하여 Input System을 구현하는 것에서 가장 중요한 것은
콜백 함수의 이름을 규칙에 맞게 사용하는 것입니다.
생성한 코드를 컴포넌트로서 우리가 움직일 오브젝트에 추가하겠습니다.
Speed 변수의 값을 위와 같이 구성하였습니다.
이제 최종 실행 결과를 확인해보겠습니다.
위와 같이 키 입력에 따른 콜백 함수를 잘 수행하는 것을 확인할 수 있습니다.
'유니티 > 유니티 C#' 카테고리의 다른 글
유니티 입력 처리 심화 - (10) Player Input 컴포넌트 - Invoke Unity Events (0) | 2025.01.04 |
---|---|
유니티 입력 처리 심화 - (9) Player Input 컴포넌트 - Broadcast Messages (0) | 2025.01.02 |
유니티 입력 처리 심화 - (7) Player Input 컴포넌트를 통한 입력 처리 (0) | 2025.01.01 |
유니티 입력 처리 심화 - (6) Action에 대한 추가적인 정보 (0) | 2024.12.26 |
유니티 입력 처리 심화 - (5) Action의 Processor (0) | 2024.12.25 |