Unity动态改键,自定义按键

 突发奇想,做游戏的时候自定义键位;然后尝试了一下,有点困难~~~~不怕,克服它。

上代码:

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class DownAnyKy : MonoBehaviour
{
    //KeyCode key = KeyCode.A;
    KeyCode key;

    private bool IsChangeKey = false; //是否改键位
    private int num = 0;
    public InputField inputtext;
    // Start is called before the first frame update
    void Start()
    {

    }

    // Update is called once per frame
    void Update()
    {
        if(!IsChangeKey)
        {
            if (Input.GetKey(key))
            {
                Debug.Log("我是" + key + "键");
            }
        }

        getKeyDownCode();
    }

    public KeyCode getKeyDownCode()
    {
        if(IsChangeKey)
        {
            if (Input.anyKeyDown)
            {
                foreach (KeyCode keyCode in Enum.GetValues(typeof(KeyCode)))
                {
                    if (Input.GetKeyDown(keyCode) && keyCode.ToString() != "Mouse0")
                    {
                        Debug.Log(keyCode.ToString());
                        key = keyCode;
                        inputtext.text = keyCode.ToString();
                        return keyCode;
                    }
                }
            }
        }
        return KeyCode.None;
    }

    public void OnChangeKey()
    {
        num++;
        if(num % 2 != 0)
        {
            IsChangeKey = true;
            inputtext.gameObject.SetActive(true);
        }
        else
        {
            IsChangeKey = false;
            inputtext.gameObject.SetActive(false);
        }
        Debug.Log(IsChangeKey);
    }
}

总算勉强完成了,碰到了以下问题:

1.使用KeyCode赋初始值后,后面自定义了其他按键,那么这个KeyCode会有两个按键值。

2.自定义键盘按键时,要把鼠标按键屏蔽掉,不然你鼠标执行的最后一步,KeyCode会获取你的鼠标值。

3.以上代码虽然可以实现自定义按键,但是做法比较笨,没有可扩展性,只有一个思路;大家有更好的思路可以回复我,大家一起学习。

你可能感兴趣的:(Unity3d,unity)