界面很简单,只创建了一Image,Image下边有一个Text。基本思路是点击Image,Text清空,进入修改状态,然后用户按下任意键,按下的任意键极为修改后的键
然后下面的脚本是挂在Image下面的
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using UnityEngine.EventSystems; using System; public class ChangeButton : MonoBehaviour, IPointerClickHandler { private KeyCode defult = KeyCode.A; private bool willchange; // Use this for initialization void Start() { if (GetComponentInChildren<Text>().text != defult.ToString().ToUpper()) { GetComponentInChildren<Text>().text = defult.ToString().ToUpper(); } } // Update is called once per frame void Update() { if (Input.GetKeyDown(defult)) { Debug.Log(defult + "被按下"); } } void OnGUI() { GUI.Label(new Rect(10, 10, 300, 30), "当前按键为:" + defult.ToString().ToUpper()); if (willchange) { GUI.Label(new Rect(10, 50, 300, 30), "按任意键修改按键"); if (Input.anyKeyDown) { Event e = Event.current; Debug.Log(e.keyCode); Debug.Log(e); if (e.isKey) { defult = e.keyCode; GetComponentInChildren<Text>().text = defult.ToString().ToUpper(); willchange = false; } } } } public void OnPointerClick(PointerEventData eventData) { willchange = true; GetComponentInChildren<Text>().text = ""; } }