An easy to use Unity 3D library for creating illustrated Interactive Fiction games and more.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

70 lines
2.0 KiB

// 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
{
/// <summary>
/// Key press modes supported by Key Pressed event handler.
/// </summary>
public enum KeyPressType
{
/// <summary> Execute once when the key is pressed down. </summary>
KeyDown,
/// <summary> Execute once when the key is released </summary>
KeyUp,
/// <summary> Execute once per frame when key is held down. </summary>
KeyRepeat
}
/// <summary>
/// The block will execute when a key press event occurs.
/// </summary>
[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
}
}