using System.Collections.Generic; using Sirenix.OdinInspector; using UnityEngine; using UnityEngine.InputSystem; // ReSharper disable once CheckNamespace namespace BlueWaterProject { public class InputKeyManager : Singleton { [SerializeField] private InputActionAsset actionAsset; public Dictionary> CombatKeyBindings { get; set; } = new(); private void Start() { LoadBindings(); } private void LoadBindings() { foreach (var actionMap in actionAsset.actionMaps) { switch (actionMap.name) { case "Combat": CombatKeyBindings = LoadActionMapBindings(actionMap); break; // 추가 액션 맵에 대해서도 비슷한 패턴으로 처리 가능 } } } private Dictionary> LoadActionMapBindings(InputActionMap actionMap) { var bindings = new Dictionary>(); foreach (var action in actionMap.actions) { var bindingList = new List(); foreach (var binding in action.bindings) { var path = !string.IsNullOrEmpty(binding.overridePath) ? binding.overridePath : binding.path; bindingList.Add(path); } if (bindingList.Count > 0) { bindings[action.name] = bindingList; } } return bindings; } [Button("Dictionary 출력")] private void PrintBindings() { PrintActionMapBindings("Combat", CombatKeyBindings); } private void PrintActionMapBindings(string actionMapName, Dictionary> bindings) { Debug.Log($"Action Map: {actionMapName}"); foreach (var entry in bindings) { Debug.Log($"Action: {entry.Key}, Bindings: {string.Join(", ", entry.Value)}"); } } } }