界面很简单,只创建了一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 = "";
}
}
原文:http://www.cnblogs.com/lanrenqilanming/p/7007939.html