따로 에셋을 쓰지 않고, 자체제작을 했을 때 가장 문제시 되는 것은 사용자가 입력장치를 통해 입력한 값을 찾아내는 것이다.
이 부분에 있어 인터넷에선 두 가지 종류의 방식을 찾아볼 수 있었다.
1. KeyCode 열거형의 value를 모두 탐색해 Input.GetKeyDown과 같은 처리기를 통해 확인한다.
foreach(KeyCode value in System.Enum.GetValues(typeof(KeyCode)))
{
if (Input.GetKeyDown(value))
// 키맵핑 처리
}
2. OnGUI에서 사용가능한, Event.current를 참조해 현재 입력한 keycode를 얻는다.
private OnGUI()
{
if(enable)
{
var keyCode = Event.current.keyCode;
// 키맵핑 처리
}
}
첫 번째 방법은 이벤트가 발생하면 324개의 값으로 이뤄진 KeyCode를 탐색하기에, 성능상 문제도 없고 구현도 간단해 많이 사용된다.
두 번째 방법은 Event.current.keyCode 값을 읽으려면 OnGUI 루프에서 사용해야 하기에, 매 프레임 마다 연산이 아주 조금 늘어나는 문제가 있다. 다만, 이도 아주 극소량이기에 문제 될 이유는 없다.
따라서 그냥 취향과 가독성에 따라 마음 편히 개발하고 넘기는 것이 정신건강에 이롭다.