Files
Cielonos/Assets/External VFXs/Lana Studio/Casual RPG VFX/Demo/Scripts/_InputKeyBoard.cs
SoulliesOfficial 649b7a5ddc 更新
2026-05-23 08:27:50 -04:00

146 lines
5.2 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
[AddComponentMenu("1Enwer/Input/_KeyBoard")]
public class _InputKeyBoard : MonoBehaviour
{
public PressType pressType = PressType.GetKeyDown;
public KeyCodeEvent[] keyBoardGetKey;
public enum PressType
{
GetKey,
GetKeyDown,
GetKeyUp
}
[System.Serializable]
public class KeyCodeEvent
{
public KeyCode keyCode;
public UnityEvent function;
}
void Update()
{
#if ENABLE_INPUT_SYSTEM && !ENABLE_LEGACY_INPUT_MANAGER
for (int i = 0; i < keyBoardGetKey.Length; i++)
{
if (KeyBoardIsPressedNew(pressType, keyBoardGetKey[i].keyCode))
{
keyBoardGetKey[i].function.Invoke();
}
}
#else
for (int i = 0; i < keyBoardGetKey.Length; i++)
{
if (KeyBoardIsPressedOld(pressType, keyBoardGetKey[i].keyCode))
{
keyBoardGetKey[i].function.Invoke();
}
}
#endif
}
#if ENABLE_INPUT_SYSTEM && !ENABLE_LEGACY_INPUT_MANAGER
public bool KeyBoardIsPressedNew(PressType _pressType, KeyCode keycode)
{
var keyboard = UnityEngine.InputSystem.Keyboard.current;
if (keyboard == null) return false;
var key = ConvertKeyCode(keycode);
if (key == null) return false;
switch (_pressType)
{
case PressType.GetKey:
return key.isPressed;
case PressType.GetKeyDown:
return key.wasPressedThisFrame;
case PressType.GetKeyUp:
return key.wasReleasedThisFrame;
default:
return false;
}
}
private UnityEngine.InputSystem.Controls.KeyControl ConvertKeyCode(KeyCode keyCode)
{
var keyboard = UnityEngine.InputSystem.Keyboard.current;
if (keyboard == null) return null;
switch (keyCode)
{
case KeyCode.A: return keyboard.aKey;
case KeyCode.B: return keyboard.bKey;
case KeyCode.C: return keyboard.cKey;
case KeyCode.D: return keyboard.dKey;
case KeyCode.E: return keyboard.eKey;
case KeyCode.F: return keyboard.fKey;
case KeyCode.G: return keyboard.gKey;
case KeyCode.H: return keyboard.hKey;
case KeyCode.I: return keyboard.iKey;
case KeyCode.J: return keyboard.jKey;
case KeyCode.K: return keyboard.kKey;
case KeyCode.L: return keyboard.lKey;
case KeyCode.M: return keyboard.mKey;
case KeyCode.N: return keyboard.nKey;
case KeyCode.O: return keyboard.oKey;
case KeyCode.P: return keyboard.pKey;
case KeyCode.Q: return keyboard.qKey;
case KeyCode.R: return keyboard.rKey;
case KeyCode.S: return keyboard.sKey;
case KeyCode.T: return keyboard.tKey;
case KeyCode.U: return keyboard.uKey;
case KeyCode.V: return keyboard.vKey;
case KeyCode.W: return keyboard.wKey;
case KeyCode.X: return keyboard.xKey;
case KeyCode.Y: return keyboard.yKey;
case KeyCode.Z: return keyboard.zKey;
case KeyCode.Space: return keyboard.spaceKey;
case KeyCode.LeftShift: return keyboard.leftShiftKey;
case KeyCode.RightShift: return keyboard.rightShiftKey;
case KeyCode.LeftControl: return keyboard.leftCtrlKey;
case KeyCode.RightControl: return keyboard.rightCtrlKey;
case KeyCode.LeftAlt: return keyboard.leftAltKey;
case KeyCode.RightAlt: return keyboard.rightAltKey;
case KeyCode.Escape: return keyboard.escapeKey;
case KeyCode.Return: return keyboard.enterKey;
case KeyCode.Backspace: return keyboard.backspaceKey;
case KeyCode.Tab: return keyboard.tabKey;
case KeyCode.UpArrow: return keyboard.upArrowKey;
case KeyCode.DownArrow: return keyboard.downArrowKey;
case KeyCode.LeftArrow: return keyboard.leftArrowKey;
case KeyCode.RightArrow: return keyboard.rightArrowKey;
case KeyCode.Alpha0: return keyboard.digit0Key;
case KeyCode.Alpha1: return keyboard.digit1Key;
case KeyCode.Alpha2: return keyboard.digit2Key;
case KeyCode.Alpha3: return keyboard.digit3Key;
case KeyCode.Alpha4: return keyboard.digit4Key;
case KeyCode.Alpha5: return keyboard.digit5Key;
case KeyCode.Alpha6: return keyboard.digit6Key;
case KeyCode.Alpha7: return keyboard.digit7Key;
case KeyCode.Alpha8: return keyboard.digit8Key;
case KeyCode.Alpha9: return keyboard.digit9Key;
default: return null;
}
}
#else
public bool KeyBoardIsPressedOld(PressType _pressType, KeyCode keycode)
{
switch (_pressType)
{
case PressType.GetKey:
return Input.GetKey(keycode);
case PressType.GetKeyDown:
return Input.GetKeyDown(keycode);
case PressType.GetKeyUp:
return Input.GetKeyUp(keycode);
default:
return false;
}
}
#endif
}