Input Manager

개발조하·2023년 11월 26일
0

Unity

목록 보기
6/30
post-thumbnail

1. Input Manager의 목적

ㄴ 이렇게 키 값이나 마우스 클릭 등의 기능을 Update()에서 계속 체크하도록 설계하게 되면 규모가 큰 프로젝트에서는 성능의 부하를 야기할 수 있다. 이를 방지하기 위해 Input Manager를 사용해야 한다.

  • InputManager
    : Input관련 이벤트를 관리하는 매니저

2. Action

InputManger가 Update()에서 입력받은 '키'를 체크하고 해당하는 이벤트를 출력해준다. Unity에서 자체 제공해주는 delegate.
=> 디자인 패턴 중 Listener 패턴!!

  • InputManager.cs
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();
    }
}
  • Managers.cs
  • PlayerController.cs

3. InputManager의 장점

  • PlayerController.cs의 Update()에서 프레임마다 체크하는 방식보다는 중앙에서 이벤트 통지하는 것이 유리하다.
  • InputManager 스크립트에서 KeyAction.Invoke()를 찍고 디버깅하여 어떠한 메서드(이벤트)가 호출되고 있는지 쉽게 체크할 수 있다.

📄참고자료
[인프런] c#과 유니티로 만드는 MMORPG 게임 개발 시리즈_Input Manager
delegate와 Action

profile
Unity 개발자 취준생의 개발로그, Slow and steady wins the race !

0개의 댓글