ㄴ 이렇게 키 값이나 마우스 클릭 등의 기능을 Update()에서 계속 체크하도록 설계하게 되면 규모가 큰 프로젝트에서는 성능의 부하를 야기할 수 있다. 이를 방지하기 위해 Input Manager를 사용해야 한다.
InputManger가 Update()에서 입력받은 '키'를 체크하고 해당하는 이벤트를 출력해준다. Unity에서 자체 제공해주는 delegate.
=> 디자인 패턴 중 Listener 패턴!!
using System;
using UnityEngine;
public class InputManager //싱글톤으로 구현한 Managers가 있기 때문에 컴포넌트로 넣어줄 필요 없어서 MonoBehaviour 삭제
{
public Action KeyAction = null;
public void OnUpdate() //MonoBehaviour가 아닌 누군가가 직접 호출해줘야하는 함수니까 OnUpdate()로 이름을 줬다.
{
if (Input.anyKey == false)
return;
if(KeyAction != null )
KeyAction.Invoke();
}
}
📄참고자료
[인프런] c#과 유니티로 만드는 MMORPG 게임 개발 시리즈_Input Manager
delegate와 Action