From 781ad1b41d10e1ff828eb8e4ca60648fdd224cd0 Mon Sep 17 00:00:00 2001 From: chai Date: Thu, 9 Sep 2021 16:19:47 +0800 Subject: =?UTF-8?q?*=E8=B0=83=E6=95=B4=E5=87=A0=E4=B8=AA=E5=8A=A8=E4=BD=9C?= =?UTF-8?q?=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/Scripts/Input/InputManager.cs | 59 +++++++++++++++++++++--------------- 1 file changed, 35 insertions(+), 24 deletions(-) (limited to 'Assets/Scripts/Input') diff --git a/Assets/Scripts/Input/InputManager.cs b/Assets/Scripts/Input/InputManager.cs index 4ad6ec02..6b200462 100644 --- a/Assets/Scripts/Input/InputManager.cs +++ b/Assets/Scripts/Input/InputManager.cs @@ -59,30 +59,41 @@ public class InputManager : SingletonMB public bool TryCommand(float interval = 0.5f, params KeyCode[] keys) { - if (keys.Length > m_CommandQueue.Count) - return false; - if (!Input.GetKey(keys[keys.Length - 1])) + return TryCommand(interval, true, keys); + + } + + public bool TryCommand(float interval = 0.5f, bool checkInput = false, params KeyCode[] keys) + { + if (keys.Length > m_CommandQueue.Count) return false; - int count = m_CommandQueue.Count; - float preTime = m_CommandQueue[count - keys.Length].time; - for (int i = 0; i < keys.Length; ++i) - { - if(keys[i] == m_CommandQueue[i + count - keys.Length].key) - { - if(m_CommandQueue[i + count - keys.Length].time - preTime > interval) - { - return false; - } - preTime = m_CommandQueue[i + count - keys.Length].time; - } - else - { - return false; - } - } - //m_CommandQueue.RemoveRange(count - keys.Length, keys.Length); - m_CommandQueue.Clear(); - return true; - } + if (checkInput && !Input.GetKey(keys[keys.Length - 1])) + return false; + int count = m_CommandQueue.Count; + float preTime = m_CommandQueue[count - keys.Length].time; + for (int i = 0; i < keys.Length; ++i) + { + if (keys[i] == m_CommandQueue[i + count - keys.Length].key) + { + if (m_CommandQueue[i + count - keys.Length].time - preTime > interval) + { + return false; + } + preTime = m_CommandQueue[i + count - keys.Length].time; + } + else + { + return false; + } + } + //m_CommandQueue.RemoveRange(count - keys.Length, keys.Length); + m_CommandQueue.Clear(); // 清理 + return true; + } + + public void ClearCommand() + { + m_CommandQueue.Clear(); + } } -- cgit v1.1-26-g67d0