Unity使用Ugui实现多框输入,类似于支付宝的支付密码

这两天一直在研究这个多框输入,网上找了半天也没有发现用Unity和C#交互的,索性就自己写一个,当然方法不止我这一种,我这个也不一定是最简便的,还有的可以交流一下!

首先建6个Text文本框作为显示

建立12个按钮 分别是0到9重输和删除键

再找一个新的文本框作为最终显示

新建一个名字为FindRoomID的脚本 代码如下:

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

public class FindRoomID : MonoBehaviour {
    public GameObject[] boxArea;
    FindRoomID _instance;
    string RoomID;
    public Text ShowNum;
    void Start()
    {
        ShowNum.text = "";
    }  
    void Awake()
    {
        _instance = this;
    }
    GameObject GetEnemyBoxArea()
    {
        GameObject ret = null;
        for (int i = 0; i < boxArea.Length; i++)
        {
            if (boxArea[i].GetComponent<Text>().text == "")
            {
                ret = boxArea[i];
                break;
            }
        }
        return ret;
    }
    void AddNum(int num)
    {
        GameObject go = GetEnemyBoxArea();
        if (go == null)
            return;
        go.GetComponent<Text>().text = num.ToString();
    }
    void ResNum()
    {
        for (int i = 0; i < boxArea.Length; i++)
        {
            if (boxArea[i].GetComponent<Text>().text != "")
            {
                boxArea[i].GetComponent<Text>().text = "";
            }
        }
    }
    GameObject Delete()
    {
        GameObject ret = null;
        for (int i = boxArea.Length - 1; i >= 0; i--)
        {
            if (boxArea[i].GetComponent<Text>().text != "")
            {
                ret = boxArea[i];
                break;
            }
        }
        return ret;
    }
    void DelNmub(string nul)
    {
        GameObject go = Delete();
        if (go == null)
            return;
        go.GetComponent<Text>().text = nul.ToString();
    }
    public void Num0()
    {
        _instance.AddNum(0);
    }
    public void Num1()
    {
        _instance.AddNum(1);
    }
    public void Num2()
    {
        _instance.AddNum(2);
    }
    public void Num3()
    {
        _instance.AddNum(3);
    }
    public void Num4()
    {
        _instance.AddNum(4);
    }
    public void Num5()
    {
        _instance.AddNum(5);
    }
    public void Num6()
    {
        _instance.AddNum(6);
    }
    public void Num7()
    {
        _instance.AddNum(7);
    }
    public void Num8()
    {
        _instance.AddNum(8);
    }
    public void Num9()
    {
        _instance.AddNum(9);
    }
    public void RestNum()
    {
        _instance.ResNum();
        ShowNum.text = "";
    }
    public void DelNum()
    {
        _instance.DelNmub("");
        ShowNum.text = "";
    }
    public void InputOver() {
        if (boxArea[5].GetComponent<Text>().text!="")
        {
            string Show0 = boxArea[0].GetComponent<Text>().text.ToString();
            string Show1 = boxArea[1].GetComponent<Text>().text.ToString();
            string Show2 = boxArea[2].GetComponent<Text>().text.ToString();
            string Show3 = boxArea[3].GetComponent<Text>().text.ToString();
            string Show4 = boxArea[4].GetComponent<Text>().text.ToString();
            string Show5 = boxArea[5].GetComponent<Text>().text.ToString();
            RoomID = Show0 + Show1 + Show2 + Show3 + Show4 + Show5;
            Debug.Log("输入完毕,你输入的ID为:"+RoomID);
            ShowNum.text = "你已经成功输入,ID为:" + RoomID;
        }
	}
}
把刚才的6个小的文本框拖拽到 boxArea上去 淡然前提 boxArea的size定义为6

把想最终展示的文本框拖拽到ShowNum上去 

点击事件依次拉一下 0到9每个数字按钮上要拉两个点击事件 


然后排列一下各个按钮的顺序就可以输入了

教程很简单 GoodLuck!

猜你喜欢

转载自blog.csdn.net/Superficialtise/article/details/69523435