해당 포스트에 이어서 쓰는 내용입니다.
Behavior
현재 게임 오브젝트에 키 입력값을 전달받고 로직을 제어할 스크립트를 붙여줬습니다.
Behavior란?
:입력이 들어왔을 때, 해당 내용을 전달해주는 방법을 고르는 부분
- Send Messages, Broadcast Messages : 유니티의 Send Message 기능을 사용하여 특정 함수를 호출하는 방법
- Invoke Unity Events, Invoke C Sharp Events : 유니티나 C#의 이벤트 기능을 사용하는 방법
위 방법을 스크립트에서 사용하기 위해선
using UnityEngine.InputSystem;
위와 같은 네임스페이스 적용이 필요함.
Message를 선택했을 때
- 특정 키가 입력을 인식하면, 특정 함수를 자동으로 호출하는 방식
- Broadcast Messages의 경우, 하위 계층에 있는 오브젝트들까지 제어를 할 수 있음
- 함수명이 "On + Actions name" 으로 구성된다.
현재 "Move" Actions 하나만 설정 해놨는데,
해당 Actions에서 받는 키를 입력하게 되면, On + Actions name 이름인 함수를 자동으로 호출합니다.
void OnMove(InputValue value)
{
Vector2 input=value.Get<Vector2>();
//"Move" Actions에 해당하는 키 리턴은 'Vector2'로 받도록 설정해놨기 때문
if(input!=null)
{
}
}
//"Move" Actions에 해당하는 키 입력 시 자동으로 호출됨.
/*
저 같은 경우 w,a,s,d,화살표를 Move 액션에 입력키로 설정해놨기때문에
해당 키들이 눌린다면 위 OnMove가 호출됩니다.
*/
//만약에 Action Type을 "Button"으로 설정한 "Jump" Actions도 추가했었다 하면
vod OnJump()
{
}
//Action Type이 "Button"인 경우에는 따로 매개변수가 없습니다.
Invoke Unity Events 기능 사용
- Unity의 Event방식 사용
- 해당 Actions에 대한 키 입력이 들어오면, 설정한 이벤트 함수를 호출해 줌.
public void OnMove(InputAction.CallbackContext context)
{
Vector2 input = context.ReadValue<Vector2>();
}
인스펙터창에서 함수를 지정해주기 위해선 반드시 함수의 접근지정자를 public으로 해줘야 합니다.
(C#스크립트를 바로 끌어다 놓는것이 아닌, 하이레키창에 있는 오브젝트를 드래그해서 찾아야함)
'유니티' 카테고리의 다른 글
[Unity] 애니메이션 및 행동 관리하기(with 스테이트 패턴) (0) | 2023.01.30 |
---|---|
[Unity] 애니메이션 기초(스테이트 머신) 및 파라미터 설정 (0) | 2023.01.28 |
[Unity] Input받는 방법 (Input System 이용) (0) | 2023.01.25 |
[Unity] Awake와 Start차이 (0) | 2023.01.24 |
[Unity] 오브젝트를 이동시키는 방법들 (2) | 2023.01.22 |