티스토리 뷰
1. if 사용
소스코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | using UnityEngine; public class UseIf : MonoBehaviour { // Update is called once per frame void Update () { if(Input.GetKeyDown(KeyCode.A)) { KeyDown_A(); } if(Input.GetKeyDown(KeyCode.B)) { KeyDown_B(); } if(Input.GetKeyDown(KeyCode.C)) { KeyDown_C(); } } private void KeyDown_A() { Debug.Log("A"); } private void KeyDown_B() { Debug.Log("B"); } private void KeyDown_C() { Debug.Log("C"); } } | cs |
2. switch 사용
소스코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | using UnityEngine; public class UseSwitch : MonoBehaviour { void Update() { switch (Input.inputString) { case "A": KeyDown_A(); break; case "B": KeyDown_B(); break; case "C": KeyDown_C(); break; } } private void KeyDown_A() { Debug.Log("A"); } private void KeyDown_B() { Debug.Log("B"); } private void KeyDown_C() { Debug.Log("C"); } } | cs |
3. Dictionary, delegate 사용
소스코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | using System; using System.Collections.Generic; using UnityEngine; public class UseDictionaryDelegate : MonoBehaviour { Dictionary<KeyCode, Action> keyDictionary; void Start () { keyDictionary = new Dictionary<KeyCode, Action> { { KeyCode.A, KeyDown_A }, { KeyCode.B, KeyDown_B }, { KeyCode.C, KeyDown_C } }; } // Update is called once per frame void Update () { if(Input.anyKeyDown) { foreach (var dic in keyDictionary) { if(Input.GetKeyDown(dic.Key)) { dic.Value(); } } } } private void KeyDown_A() { Debug.Log("A"); } private void KeyDown_B() { Debug.Log("B"); } private void KeyDown_C() { Debug.Log("C"); } } | cs |
4. 유니티에서 키보드 입력 값을 받는 세 가지 방법 비교
4-1 if 사용
장점 :
1. 직관적임으로 이해가 쉬움
단점 :
1. 입력하는 키의 종류가 늘어남에 따라 코드의 양이 늘어나며 중복이 심하다.
2. if 문이 여러군데 중구난방으로 사용될 수 있을 가능성이 높아 관리의 어려움이 생길 수 있다.
4-2 switch 사용
장점 :
1. 직관적임으로 이해가 쉽다.
2. 하나의 switch문 안에 키보드 입력할 때의 로직을 작성하기 때문에 코드 관리가 용이하다.
단점 :
1. if 문의 사용보다는 덜 하지만 입력하는 키의 종류가 늘어남에 따라 코드의 양이증가한다.
2. KeyCode.A 는 소문자 a, 대문자 A 모두 가능하지만 switch문은 case에 사용된 대문자 A 만을 인식한다.
4-2 Dictionary, delegate 사용
장점 :
1. 입력하는 키의 종류가 늘어나도 입력 키를 구분하는 코드의 증가가 없다.
2. 코드 관리가 용이하다.
단점 :
1. C# 과 Unity 초보자에게는 이해가 어려운 코드가 될 수 있다.
2. 키를 눌렀을 때 호출되는 함수의 형식이 다양할 경우 적용이 어렵다.
'Unity > Study' 카테고리의 다른 글
[WPF] Delegate + 트리 하위 요소 탐색 (0) | 2018.06.07 |
---|---|
[Unity] Coroutine 의 yield return 뒤 함수 확장 (0) | 2018.05.31 |
[Unity] 화면비율 래터박스로 맞추기 (1) | 2018.04.20 |
visual studio 코드 스니핏 (0) | 2018.01.24 |
[Unity] sin, cos 함수를 이용한 원 운동 (0) | 2018.01.19 |
댓글