// This code is part of the Fungus library (https://github.com/snozbot/fungus) // It is released for free under the MIT open source license (https://github.com/snozbot/fungus/blob/master/LICENSE) using UnityEngine; namespace Fungus { /// /// Key press modes supported by Key Pressed event handler. /// public enum KeyPressType { /// Execute once when the key is pressed down. KeyDown, /// Execute once when the key is released KeyUp, /// Execute once per frame when key is held down. KeyRepeat } /// /// The block will execute when a key press event occurs. /// [EventHandlerInfo("Input", "Key Pressed", "The block will execute when a key press event occurs.")] [AddComponentMenu("")] public class KeyPressed : EventHandler { [Tooltip("The type of keypress to activate on")] [SerializeField] protected KeyPressType keyPressType; [Tooltip("Keycode of the key to activate on")] [SerializeField] protected KeyCode keyCode; protected virtual void Update() { switch (keyPressType) { case KeyPressType.KeyDown: if (Input.GetKeyDown(keyCode)) { ExecuteBlock(); } break; case KeyPressType.KeyUp: if (Input.GetKeyUp(keyCode)) { ExecuteBlock(); } break; case KeyPressType.KeyRepeat: if (Input.GetKey(keyCode)) { ExecuteBlock(); } break; } } #region Public members public override string GetSummary() { return keyCode.ToString(); } #endregion } }