Unity制作虚拟按键输入数字答案

Unity制作虚拟按键输入数字答案

1、层级结构

在这里插入图片描述
在这里插入图片描述

GameScene是Panel,其实就是一张灰白色的背景;1level-1就是灰色的背景;Text就是题目;InputField是输入框;input是一张盖住了输入框的全透明图片;input的子对象都是按钮。
在这里插入图片描述
注意这张input,需要盖住输入框,不然运行时点击输入框可以键盘输入。

2、代码
  public Button btnDelete;
    public Button btnQueren;
    public Button[] btnCount;
    public InputField field;
    private GameObject WinPanel;
    // Start is called before the first frame update
    void Start()
    {
        WinPanel = GameObject.Find("Canvas/GameScene/WinPanel");
        if (btnDelete) btnDelete.onClick.AddListener(ClickDeleteButton);
        if (btnQueren) btnQueren.onClick.AddListener(ClickQuerenButton);

        if (btnCount[0]) btnCount[0].onClick.AddListener(ClickCount0Button);
        if (btnCount[1]) btnCount[1].onClick.AddListener(ClickCount1Button);
        if (btnCount[2]) btnCount[2].onClick.AddListener(ClickCount2Button);
        if (btnCount[3]) btnCount[3].onClick.AddListener(ClickCount3Button);
        if (btnCount[4]) btnCount[4].onClick.AddListener(ClickCount4Button);
        if (btnCount[5]) btnCount[5].onClick.AddListener(ClickCount5Button);
        if (btnCount[6]) btnCount[6].onClick.AddListener(ClickCount6Button);
        if (btnCount[7]) btnCount[7].onClick.AddListener(ClickCount7Button);
        if (btnCount[8]) btnCount[8].onClick.AddListener(ClickCount8Button);
        if (btnCount[9]) btnCount[9].onClick.AddListener(ClickCount9Button);
    }

btnDelete:删除按键
btnQueren:确认按键
btnCount:数字按键
field:输入框
WinPanel:胜利面板

 void ClickDeleteButton()
    {
        if(!field.text.Equals("")||field.text.Trim().Length!=0)
        {
            field.text = field.text.Remove(field.text.Trim().Length - 1, 1);
        }
    }

    void ClickQuerenButton()
    {
        if (gameObject.name == "1level-1")
        {
            if (field.text.Equals("96"))
            {
                WinPanel.SetActive(true);
                Debug.Log("恭喜过关!");
            }
            else
                Debug.Log("答案错误!");
        }
        else if(gameObject.name == "1level-2")
        {
            if (field.text.Equals("72"))
            {
                WinPanel.SetActive(true);
                Debug.Log("恭喜过关!");
            }
            else
                Debug.Log("答案错误!");
        }
        else if (gameObject.name == "1level-3")
        {
            if (field.text.Equals("0"))
            {
                WinPanel.SetActive(true);
                Debug.Log("恭喜过关!");
            }
            else
                Debug.Log("答案错误!");
        }
        else if (gameObject.name == "1level-4")
        {
            if (field.text.Equals("2"))
            {
                WinPanel.SetActive(true);
                Debug.Log("恭喜过关!");
            }
            else
                Debug.Log("答案错误!");
        }
        else if (gameObject.name == "1level-5")
        {
            if (field.text.Equals("1200"))
            {
                WinPanel.SetActive(true);
                Debug.Log("恭喜过关!");
            }
            else
                Debug.Log("答案错误!");
        }
    }

ClickDeleteButton :删除按钮事件,注意判断输入框是否为空,删除字符的时候删除最后一个字符。
ClickQuerenButton :匹配答案的关键在Equals,判断对象名字是因为我做了多个关卡。

void ClickCount0Button()
    {
        field.text += "0";
    }

    void ClickCount1Button()
    {
        field.text += "1";
    }
    void ClickCount2Button()
    {
        field.text += "2";
    }
    void ClickCount3Button()
    {
        field.text += "3";
    }
    void ClickCount4Button()
    {
        field.text += "4";
    }
    void ClickCount5Button()
    {
        field.text += "5";
    }
    void ClickCount6Button()
    {
        field.text += "6";
    }
    void ClickCount7Button()
    {
        field.text += "7";
    }
    void ClickCount8Button()
    {
        field.text += "8";
    }
    void ClickCount9Button()
    {
        field.text += "9";
    }

数字0~9的按键函数,注意字符串用+=来累加字符串。

3、最终效果:

在这里插入图片描述
在这里插入图片描述

4、进阶:

在此基础上,可以做多个框的删除和输入,代码直接放下面了,就是加多了一个关于字符长度的判断就可以了,我的判断长度是2。

 public Button btnDelete;
    public Button btnQueren;
    public Button[] btnCount;
    public InputField[] field;
    private GameObject WinPanel;
    // Start is called before the first frame update
    void Start()
    {
        WinPanel = GameObject.Find("Canvas/GameScene/WinPanel");
        if (btnDelete) btnDelete.onClick.AddListener(ClickDeleteButton);
        if (btnQueren) btnQueren.onClick.AddListener(ClickQuerenButton);

        if (btnCount[0]) btnCount[0].onClick.AddListener(ClickCount0Button);
        if (btnCount[1]) btnCount[1].onClick.AddListener(ClickCount1Button);
        if (btnCount[2]) btnCount[2].onClick.AddListener(ClickCount2Button);
        if (btnCount[3]) btnCount[3].onClick.AddListener(ClickCount3Button);
        if (btnCount[4]) btnCount[4].onClick.AddListener(ClickCount4Button);
        if (btnCount[5]) btnCount[5].onClick.AddListener(ClickCount5Button);
        if (btnCount[6]) btnCount[6].onClick.AddListener(ClickCount6Button);
        if (btnCount[7]) btnCount[7].onClick.AddListener(ClickCount7Button);
        if (btnCount[8]) btnCount[8].onClick.AddListener(ClickCount8Button);
        if (btnCount[9]) btnCount[9].onClick.AddListener(ClickCount9Button);
    }

    void ClickDeleteButton()
    {
        if (!field[3].text.Equals("") || field[3].text.Trim().Length != 0)
        {
            field[3].text = field[3].text.Remove(field[3].text.Trim().Length - 1, 1);
        }
        else if(!field[2].text.Equals("") || field[2].text.Trim().Length != 0)
        {
            field[2].text = field[2].text.Remove(field[2].text.Trim().Length - 1, 1);
        }
        else if (!field[1].text.Equals("") || field[1].text.Trim().Length != 0)
        {
            field[1].text = field[1].text.Remove(field[1].text.Trim().Length - 1, 1);
        }
        else if (!field[0].text.Equals("") || field[0].text.Trim().Length != 0)
        {
            field[0].text = field[0].text.Remove(field[0].text.Trim().Length - 1, 1);
        }
    }

    void ClickQuerenButton()
    {
        if (gameObject.name == "3level-1")
        {
            if (field[0].text.Equals("12")&& field[1].text.Equals("03")&& field[2].text.Equals("11")&& field[3].text.Equals("17"))
            {
                WinPanel.SetActive(true);
                Debug.Log("恭喜过关!");
            }
            else
                Debug.Log("答案错误!");
        }
        else if (gameObject.name == "3level-2")
        {
            if (field[0].text.Equals("19") && field[1].text.Equals("04") && field[2].text.Equals("15") && field[3].text.Equals("24"))
            {
                WinPanel.SetActive(true);
                Debug.Log("恭喜过关!");
            }
            else
                Debug.Log("答案错误!");
        }
        else if (gameObject.name == "3level-3")
        {
            if (field[0].text.Equals("26") && field[1].text.Equals("02") && field[2].text.Equals("10") && field[3].text.Equals("23"))
            {
                WinPanel.SetActive(true);
                Debug.Log("恭喜过关!");
            }
            else
                Debug.Log("答案错误!");
        }
 
    }

    void ClickCount0Button()
    {
        if(field[0].text.Trim().Length<2)
            field[0].text += "0";
        else if(field[1].text.Trim().Length < 2)
            field[1].text += "0";
        else if (field[2].text.Trim().Length < 2)
            field[2].text += "0";
        else if (field[3].text.Trim().Length < 2)
            field[3].text += "0";
    }

    void ClickCount1Button()
    {
        if (field[0].text.Trim().Length < 2)
            field[0].text += "1";
        else if (field[1].text.Trim().Length < 2)
            field[1].text += "1";
        else if (field[2].text.Trim().Length < 2)
            field[2].text += "1";
        else if (field[3].text.Trim().Length < 2)
            field[3].text += "1";
    }
    void ClickCount2Button()
    {
        if (field[0].text.Trim().Length < 2)
            field[0].text += "2";
        else if (field[1].text.Trim().Length < 2)
            field[1].text += "2";
        else if (field[2].text.Trim().Length < 2)
            field[2].text += "2";
        else if (field[3].text.Trim().Length < 2)
            field[3].text += "2";
    }
    void ClickCount3Button()
    {
        if (field[0].text.Trim().Length < 2)
            field[0].text += "3";
        else if (field[1].text.Trim().Length < 2)
            field[1].text += "3";
        else if (field[2].text.Trim().Length < 2)
            field[2].text += "3";
        else if (field[3].text.Trim().Length < 2)
            field[3].text += "3";
    }
    void ClickCount4Button()
    {
        if (field[0].text.Trim().Length < 2)
            field[0].text += "4";
        else if (field[1].text.Trim().Length < 2)
            field[1].text += "4";
        else if (field[2].text.Trim().Length < 2)
            field[2].text += "4";
        else if (field[3].text.Trim().Length < 2)
            field[3].text += "4";
    }
    void ClickCount5Button()
    {
        if (field[0].text.Trim().Length < 2)
            field[0].text += "5";
        else if (field[1].text.Trim().Length < 2)
            field[1].text += "5";
        else if (field[2].text.Trim().Length < 2)
            field[2].text += "5";
        else if (field[3].text.Trim().Length < 2)
            field[3].text += "5";
    }
    void ClickCount6Button()
    {
        if (field[0].text.Trim().Length < 2)
            field[0].text += "6";
        else if (field[1].text.Trim().Length < 2)
            field[1].text += "6";
        else if (field[2].text.Trim().Length < 2)
            field[2].text += "6";
        else if (field[3].text.Trim().Length < 2)
            field[3].text += "6";
    }
    void ClickCount7Button()
    {
        if (field[0].text.Trim().Length < 2)
            field[0].text += "7";
        else if (field[1].text.Trim().Length < 2)
            field[1].text += "7";
        else if (field[2].text.Trim().Length < 2)
            field[2].text += "7";
        else if (field[3].text.Trim().Length < 2)
            field[3].text += "7";
    }
    void ClickCount8Button()
    {
        if (field[0].text.Trim().Length < 2)
            field[0].text += "8";
        else if (field[1].text.Trim().Length < 2)
            field[1].text += "8";
        else if (field[2].text.Trim().Length < 2)
            field[2].text += "8";
        else if (field[3].text.Trim().Length < 2)
            field[3].text += "8";
    }
    void ClickCount9Button()
    {
        if (field[0].text.Trim().Length < 2)
            field[0].text += "9";
        else if (field[1].text.Trim().Length < 2)
            field[1].text += "9";
        else if (field[2].text.Trim().Length < 2)
            field[2].text += "9";
        else if (field[3].text.Trim().Length < 2)
            field[3].text += "9";
    }

最终效果:
在这里插入图片描述
(忽略我的按钮…)

  • 5
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值