facebook twitter hatena line email

「Unity/Csharp/キー入力/Event」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
(ページの作成:「入力イベントでキー入力を行う。 フレームレートごとにInput判定するよりもこちらの方が入力精度が良い。 public class HogeScript...」)
 
行2: 行2:
 
フレームレートごとにInput判定するよりもこちらの方が入力精度が良い。
 
フレームレートごとにInput判定するよりもこちらの方が入力精度が良い。
 
  public class HogeScript : MonoBehaviour {
 
  public class HogeScript : MonoBehaviour {
bool lastShiftFlag = false;
+
bool lastShiftFlag = false;
public override void OnGUI() {
+
public override void OnGUI() {
Event e = Event.current;
+
Event e = Event.current;
if (e.type.Equals(EventType.repaint)) {
+
if (e.type.Equals(EventType.repaint)) {
lastShiftFlag = e.shift;
+
lastShiftFlag = e.shift;
}
+
}
GetEventDownKeyCheck(e, lastShiftFlag)
+
string keyname = GetEventDownKeyCheck(e, lastShiftFlag)
}
+
}
void GetEventDownKeyCheck(Event e, bool lastShiftFlag) {
+
string GetEventDownKeyCheck(Event e, bool lastShiftFlag) {
if (e.isKey) {
+
if (e.isKey) {
foreach (KeyCode code in Enum.GetValues(typeof(KeyCode))) {
+
foreach (KeyCode code in Enum.GetValues(typeof(KeyCode))) {
if (e.keyCode.Equals (code) && !e.keyCode.Equals(KeyCode.None)) {
+
if (e.keyCode.Equals (code) && !e.keyCode.Equals(KeyCode.None)) {
if (e.type.Equals (EventType.keyDown)) {
+
if (e.type.Equals (EventType.keyDown)) {
if (lastShiftFlag) {
+
if (lastShiftFlag) {
return code.ToString ();
+
return code.ToString ();
} else {
+
} else {
return code.ToString ().ToLower ();
+
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 ();
						}
					}
				}
			}
		}
	}
}