using UnityEngine; using UnityEngine.UI; using TMPro; public class KeyRebinder : MonoBehaviour { [System.Serializable] public class KeyBinding { public string ¾×¼ÇÀ̸§; public KeyCode ±âº»Å°; public KeyCode ÇöÀçŰ; public Button ¹öư; public TextMeshProUGUI ¹öÆ°ÅØ½ºÆ®; } public KeyBinding[] ۸ñ·Ï; [Header("À̹ÌÁö ¼³Á¤")] public Sprite ´ë±âÀ̹ÌÁö; public Sprite ÀÔ·ÂÁßÀ̹ÌÁö; private KeyBinding ÇöÀ纯°æÁß = null; // ¾Ë±â ½¬¿î À̸§À¸·Î º¯È¯ string ŰÀ̸§°¡Á®¿À±â(KeyCode Ű) { switch (Ű) { case KeyCode.Mouse0: return "¸¶¿ì½º ÁÂŬ¸¯"; case KeyCode.Mouse1: return "¸¶¿ì½º ¿ìŬ¸¯"; case KeyCode.Mouse2: return "¸¶¿ì½º ÈÙŬ¸¯"; case KeyCode.Space: return "½ºÆäÀ̽º¹Ù"; case KeyCode.Return: return "¿£ÅÍ"; case KeyCode.Escape: return "ESC"; case KeyCode.LeftShift: return "Á Shift"; case KeyCode.RightShift: return "¿ì Shift"; case KeyCode.LeftControl: return "Á Ctrl"; case KeyCode.RightControl: return "¿ì Ctrl"; case KeyCode.LeftAlt: return "Á Alt"; case KeyCode.RightAlt: return "¿ì Alt"; case KeyCode.Tab: return "Tab"; case KeyCode.CapsLock: return "CapsLock"; case KeyCode.Backspace: return "Backspace"; case KeyCode.Delete: return "Delete"; case KeyCode.UpArrow: return "¡è"; case KeyCode.DownArrow: return "¡é"; case KeyCode.LeftArrow: return "¡ç"; case KeyCode.RightArrow: return "¡æ"; default: return Ű.ToString().ToUpper(); } } void Start() { foreach (KeyBinding Ű in ۸ñ·Ï) { string ÀúÀåµÈŰ = PlayerPrefs.GetString(Ű.¾×¼ÇÀ̸§, Ű.±âº»Å°.ToString()); Ű.ÇöÀçŰ = (KeyCode)System.Enum.Parse(typeof(KeyCode), ÀúÀåµÈŰ); ŰŨ½ºÆ®¾÷µ¥ÀÌÆ®(Ű); } } public void Űº¯°æ½ÃÀÛ(int À妽º) { if (ÇöÀ纯°æÁß != null) ÇöÀ纯°æÁß.¹öư.GetComponent().sprite = ´ë±âÀ̹ÌÁö; ÇöÀ纯°æÁß = ۸ñ·Ï[À妽º]; ÇöÀ纯°æÁß.¹öư.GetComponent().sprite = ÀÔ·ÂÁßÀ̹ÌÁö; ÇöÀ纯°æÁß.¹öÆ°ÅØ½ºÆ®.text = "ÀÔ·ÂÇϼ¼¿ä..."; } void Update() { if (ÇöÀ纯°æÁß == null) return; if (Input.GetKeyDown(KeyCode.Escape)) { ÇöÀ纯°æÁß.¹öư.GetComponent().sprite = ´ë±âÀ̹ÌÁö; ŰŨ½ºÆ®¾÷µ¥ÀÌÆ®(ÇöÀ纯°æÁß); ÇöÀ纯°æÁß = null; return; } foreach (KeyCode ŰÄÚµå in System.Enum.GetValues(typeof(KeyCode))) { if (Input.GetKeyDown(ŰÄÚµå)) { ÇöÀ纯°æÁß.ÇöÀçŰ = ŰÄÚµå; PlayerPrefs.SetString(ÇöÀ纯°æÁß.¾×¼ÇÀ̸§, ŰÄÚµå.ToString()); PlayerPrefs.Save(); ÇöÀ纯°æÁß.¹öư.GetComponent().sprite = ´ë±âÀ̹ÌÁö; ŰŨ½ºÆ®¾÷µ¥ÀÌÆ®(ÇöÀ纯°æÁß); ÇöÀ纯°æÁß = null; return; } } } void ŰŨ½ºÆ®¾÷µ¥ÀÌÆ®(KeyBinding Ű) { Ű.¹öÆ°ÅØ½ºÆ®.text = ŰÀ̸§°¡Á®¿À±â(Ű.ÇöÀçŰ); } public void ±âº»°ªº¹¿ø() { foreach (KeyBinding Ű in ۸ñ·Ï) { Ű.ÇöÀçŰ = Ű.±âº»Å°; PlayerPrefs.SetString(Ű.¾×¼ÇÀ̸§, Ű.±âº»Å°.ToString()); ŰŨ½ºÆ®¾÷µ¥ÀÌÆ®(Ű); } PlayerPrefs.Save(); } }