/// <summary> /// ´¦ÀíÐéÄâ°´¼üʼþ /// </summary> /// <param name="vkey">ÐéÄâ°´¼üµÄ¼üÖµ</param> /// <param name="arg">ÐéÄâ°´¼ü²ÎÊý</param> private void HandleVKey(EVKey vkey, object arg = null) { if (OnVKey != null) { OnVKey(vkey, arg); } }
/// <summary> /// ½«¡¾¼üÅÌ°´¼ü¡¿×ª»¯Îª¡¾ÐéÄâ°´¼ü¡¿ /// </summary> private void HandleVKey(KeyCode key, EVKey pressKey, float pressArg, EVKey releaseKey, float releaseArg) { if (!mapKeyState.ContainsKey(key)) { mapKeyState.Add(key, new KeyState() { key = EVKey.None, arg = 0, state = false }); } if (Input.GetKey(key)) { if (!mapKeyState[key].state) { HandleVKey(EVKey.MoveStart); var keyState = mapKeyState[key]; keyState.state = true; keyState.key = pressKey; keyState.arg = pressArg; mapKeyState[key] = keyState; HandleVKey(pressKey, pressArg); } } else { if (mapKeyState[key].state) { var keyState = mapKeyState[key]; keyState.state = false; keyState.arg = 0; keyState.key = EVKey.None; mapKeyState[key] = keyState; HandleVKey(releaseKey, releaseArg); var end = true; foreach (var item in mapKeyState) { var keyCode = item.Key; var temp = item.Value; if (temp.state) { HandleVKey(temp.key, temp.arg); end = false; } } if (end) { HandleVKey(EVKey.MoveEnd); } } } }
/// <summary> /// 输入控制 /// </summary> private void OnVkey(EVKey vkey, object arg) { switch (vkey) { case EVKey.Move: break; case EVKey.MoveX: break; case EVKey.MoveY: break; case EVKey.MoveStart: break; case EVKey.MoveEnd: break; } }