視覚的に確認する
上の黒字 → Update() でキー入力を処理
下の赤字 → OnGUI() でキー入力を処理
※ わかりやすくするために、framerateを10以下に下げています
結論
キー入力がUpdate()上で処理させた場合、抜けてしまっていることが分かると思います。
ソース
public class InputManager : MonoBehaviour {
[SerializeField]
GUIManager guiManager;
[SerializeField]
GUIManager guiMangerOnGUI;
private Dictionary<KeyCode, string> keyCodes = new Dictionary<KeyCode, string> ();
void Start () {
// 入力判定用にFとJを設定
keyCodes.Add (KeyCode.F, "F");
keyCodes.Add (KeyCode.J, "J");
}
void Update () {
foreach (KeyValuePair<KeyCode, string> kvp in keyCodes) {
if (Input.GetKeyUp (kvp.Key)) {
GetKeyUp (guiManager, kvp.Value);
}
}
}
void OnGUI () {
if (Event.current.type == EventType.KeyUp) {
string input = keyCodes[Event.current.keyCode];
if (input != null) {
GetKeyUp (guiMangerOnGUI, input);
}
}
}
private void GetKeyUp (GUIManager manager, string input) {
manager.pushString (input);
}
}
public class GUIManager : MonoBehaviour {
string inputString = "";
[SerializeField]
Text displayText;
private void Update () {
if (displayText != null) {
displayText.text = inputString;
}
}
public void pushString (string input) {
inputString += input;
}
}
↧