OldBlueWater/BlueWater/Assets/02.Scripts/InputKeyManager.cs
NTG_Lenovo e4ccf72d84 Combat2D 씬 작업 중
CombatPlayer 수정 작업 중
Input System 수정
2024-05-02 16:10:19 +09:00

71 lines
2.2 KiB
C#

using System.Collections.Generic;
using Sirenix.OdinInspector;
using UnityEngine;
using UnityEngine.InputSystem;
// ReSharper disable once CheckNamespace
namespace BlueWaterProject
{
public class InputKeyManager : Singleton<InputKeyManager>
{
[SerializeField] private InputActionAsset actionAsset;
public Dictionary<string, List<string>> 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<string, List<string>> LoadActionMapBindings(InputActionMap actionMap)
{
var bindings = new Dictionary<string, List<string>>();
foreach (var action in actionMap.actions)
{
var bindingList = new List<string>();
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<string, List<string>> bindings)
{
Debug.Log($"Action Map: {actionMapName}");
foreach (var entry in bindings)
{
Debug.Log($"Action: {entry.Key}, Bindings: {string.Join(", ", entry.Value)}");
}
}
}
}