ugui用户定义操作按键

界面很简单,只创建了一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 = "";
    }
}

  

原文地址:https://www.cnblogs.com/lanrenqilanming/p/7007939.html