Enum Flagsで入力を検知する
使用例
Enum Flagsを使って入力を検知する。
定義
[Flags] public enum KeyCodeFlag { None = 0, // ----- 移動 ----- // W = 1 << 0, A = 1 << 1, S = 1 << 2, D = 1 << 3, Right_Shift = 1 << 4, // 攻撃 E = 1 << 5, // 戻る Q = 1 << 6, // メニュー M = 1 << 7, // Ui決定 Return = 1 << 8, // スキル One = 1 << 9, Two = 1 << 10, Three = 1 << 11, }
検知
/// <summary> /// 入力中ずっと /// </summary> /// <returns></returns> private KeyCodeFlag CreateGetKeyFlag() { var flag = KeyCodeFlag.None; if (Input.GetKey(KeyCode.W)) flag |= KeyCodeFlag.W; if (Input.GetKey(KeyCode.A)) flag |= KeyCodeFlag.A; if (Input.GetKey(KeyCode.S)) flag |= KeyCodeFlag.S; if (Input.GetKey(KeyCode.D)) flag |= KeyCodeFlag.D; if (Input.GetKey(KeyCode.RightShift)) flag |= KeyCodeFlag.Right_Shift; if (Input.GetKey(KeyCode.E)) flag |= KeyCodeFlag.E; if (Input.GetKey(KeyCode.Q)) flag |= KeyCodeFlag.Q; if (Input.GetKey(KeyCode.M)) flag |= KeyCodeFlag.M; if (Input.GetKey(KeyCode.Return)) flag |= KeyCodeFlag.Return; if (Input.GetKey(KeyCode.Alpha1)) flag |= KeyCodeFlag.One; if (Input.GetKey(KeyCode.Alpha2)) flag |= KeyCodeFlag.Two; if (Input.GetKey(KeyCode.Alpha3)) flag |= KeyCodeFlag.Three; return flag; }
判定
// 拡張メソッド static class EnumExtensions { public static bool HasBitFlag(this KeyCodeFlag value, KeyCodeFlag flag) => (value & flag) == flag; }