각각의 플레이어 오브젝트는 키를 입력받으면 오브젝트를 움직이는 함수가 필요하다.
그런데 키를 체크하는 코드를 플레이어 스크립트의 업데이트문마다 전부 넣으면 성능에 과부하가 걸린다.
그래서 프레임마다 업데이트문에 넣을 것이 아니라, 공용으로 사용하는 매니저에 넣어서
만약 키보드를 눌럿으면
매니저는 플레이어를 통해 이벤트를 건너받고, 매니저 스크립트 하나의 업데이트문에서 처리를 하면 좋다.
정리하자면, 업데이트 부분에서 인풋 매니저가 대표로 입력을 체크한 다음에
실제로 입력이 있었으면 그 이벤트를 쫙 전파하는 형식이다.
이것을 리스너 패턴이라고 한다.
이 이벤트를 설정한 스크립트는 해당 이벤트를 전달받을 것이다.
Managers.Input.KeyAction -= OnKeyboard;
Managers.Input.KeyAction += OnKeyboard;
매니저 스크립트에 인풋 매니저를 추가하고,
인풋 매니저에게 혹시 어떤 키가 입력받게 된다면 임의의 함수 (OnKeyboard함수) 를 실행해달라는 내용이다.
왜 굳이 해당 함수를 없애고 다시 추가하냐면
혹시라도 다른데서 이미 이벤트를 받고 있는 경우가 있을 수 있기 때문에 일단 연결을 끊은 다음에 다시 추가한다.
(연결을 안끊고 추가만 하면 한번 입력에 함수는 두번 실행됨)
아무튼 이렇게 인풋 매니저를 사용하면 인풋 매니저의 업데이트문에서만 체크하기 때문에
수백개의 플레이어마다 입력을 체크할 필요 없다.