「Unity/Csharp/キー入力/Event」の版間の差分
提供: 初心者エンジニアの簡易メモ
(ページの作成:「入力イベントでキー入力を行う。 フレームレートごとにInput判定するよりもこちらの方が入力精度が良い。 public class HogeScript...」) |
|||
行2: | 行2: | ||
フレームレートごとにInput判定するよりもこちらの方が入力精度が良い。 | フレームレートごとにInput判定するよりもこちらの方が入力精度が良い。 | ||
public class HogeScript : MonoBehaviour { | public class HogeScript : MonoBehaviour { | ||
− | + | bool lastShiftFlag = false; | |
− | + | public override void OnGUI() { | |
− | + | Event e = Event.current; | |
− | + | if (e.type.Equals(EventType.repaint)) { | |
− | + | lastShiftFlag = e.shift; | |
− | + | } | |
− | + | string keyname = GetEventDownKeyCheck(e, lastShiftFlag) | |
− | + | } | |
− | + | string GetEventDownKeyCheck(Event e, bool lastShiftFlag) { | |
− | + | if (e.isKey) { | |
− | + | foreach (KeyCode code in Enum.GetValues(typeof(KeyCode))) { | |
− | + | if (e.keyCode.Equals (code) && !e.keyCode.Equals(KeyCode.None)) { | |
− | + | if (e.type.Equals (EventType.keyDown)) { | |
− | + | if (lastShiftFlag) { | |
− | + | return code.ToString (); | |
− | + | } else { | |
− | + | return code.ToString ().ToLower (); | |
− | + | } | |
− | + | } | |
− | + | } | |
− | + | } | |
− | + | } | |
− | + | } | |
} | } |
2017年11月22日 (水) 21:59時点における版
入力イベントでキー入力を行う。 フレームレートごとにInput判定するよりもこちらの方が入力精度が良い。
public class HogeScript : MonoBehaviour { bool lastShiftFlag = false; public override void OnGUI() { Event e = Event.current; if (e.type.Equals(EventType.repaint)) { lastShiftFlag = e.shift; } string keyname = GetEventDownKeyCheck(e, lastShiftFlag) } string GetEventDownKeyCheck(Event e, bool lastShiftFlag) { if (e.isKey) { foreach (KeyCode code in Enum.GetValues(typeof(KeyCode))) { if (e.keyCode.Equals (code) && !e.keyCode.Equals(KeyCode.None)) { if (e.type.Equals (EventType.keyDown)) { if (lastShiftFlag) { return code.ToString (); } else { return code.ToString ().ToLower (); } } } } } } }