美文网首页
Unity 键盘条码

Unity 键盘条码

作者: 玄策丶 | 来源:发表于2020-04-21 11:53 被阅读0次
image.png

1、键盘输入选择条码 ,挂在每一个按钮上 index:0~35

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
public class jianpan : MonoBehaviour,IPointerClickHandler
{
    public int index; //36个按钮,判断哪个按钮
    public void OnPointerClick(PointerEventData eventData)
    {
        if (UI_TiaoMa.instance.Last_TiaoMa < 8)
        {
            //记录条码索引用于建立3D物体条码
            UI_TiaoMa.instance.Index_TiaoMa.Add(index);
            //显示的条码
            GameObject temp = Instantiate(UI_TiaoMa.instance.UI_TiaoMa_Prefab.gameObject);
            temp.GetComponentInChildren<Text>().text = transform.GetComponentInChildren<Text>().text;
            temp.transform.SetParent(UI_TiaoMa.instance.BG_TiaoMa_S[UI_TiaoMa.instance.Last_TiaoMa].transform);
            temp.transform.localPosition = Vector3.zero;
            //8位条码限定
            UI_TiaoMa.instance.Last_TiaoMa += 1;
        }
    }
}

2、制作条码脚本,配合jianpan脚本使用

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class UI_TiaoMa : MonoBehaviour
{
    public static UI_TiaoMa instance;

    public int Last_TiaoMa; //已显示的条码最后一位的索引
    
    public Transform[] BG_TiaoMa_S = new Transform[8]; //上方显示的条码UI的8个父物体
    public Transform UI_TiaoMa_Prefab; //上方显示的要复制的条码UI

    public GameObject Obj_TiaoMa_Fu_Prefab; //3D物体条码父物体
    public List<int> Index_TiaoMa; //条码数字索引

    public GameObject[] Obj_TiaoMa = new GameObject[36]; //要复制的3D物体条码
    public Button[] jianpan = new Button[36]; //键盘按钮

    public Button Btn_queding; //确定按钮
    public Button Btn_quxiao;  //取消按钮
    public Button Btn_qingchu; //清除按钮
    

    void Awake()
    {
        instance = this;
    }

    private void OnEnable()
    {
        Btn_qingchu.onClick.AddListener(clickBtn_qingchu);
        Btn_quxiao.onClick.AddListener(clickBtn_quxiao);
        Btn_queding.onClick.AddListener(clickBtn_queding);
    }
    private void OnDisable()
    {
        Btn_qingchu.onClick.RemoveListener(clickBtn_qingchu);
        Btn_quxiao.onClick.RemoveListener(clickBtn_quxiao);
        Btn_queding.onClick.RemoveListener(clickBtn_queding);
    }
    void Update()
    {
        //当最后一位是8,即填满了上方的8位条码,才能点击确定生成3D物体
        if (Last_TiaoMa.Equals(8))
        {
            Btn_queding.interactable = true;
        }
        else
        {
            Btn_queding.interactable = false;
        }
    }

    /// <summary>
    /// 确定按钮,生成3D条码
    /// </summary>
    void clickBtn_queding()
    {
        //生成3D条码物体
        GameObject Temp_TiaoMaPar = Instantiate(Obj_TiaoMa_Fu_Prefab);
        Btn_Date.instance.TiaoMa = Temp_TiaoMaPar;
        for (int i = 0; i < 8; i++)
        {
            GameObject Temp_tiaoma = Instantiate(Obj_TiaoMa[Index_TiaoMa[i]]);
            Temp_tiaoma.transform.eulerAngles = new Vector3(0,180,0);
            Temp_tiaoma.transform.SetParent(Temp_TiaoMaPar.transform);
            Temp_tiaoma.transform.localPosition = Vector3.zero + (new Vector3(-0.16f, 0, 0) * i);
        }

        //UI隐藏
        Btn_Date.instance.UI_TiaoMa.gameObject.SetActive(false);
        Btn_Date.instance.isShowUI_TiaoMa = false;
        //打开拖动
        Btn_Date.instance.BtnTiaoMa.GetComponent<BtnGongjuTest>().enabled = true;

        //PaiZhao
        Btn_Date.instance.BtnPaiZhao.interactable = true;

        //赋值拖动条码按钮
        Btn_Date.instance.BtnTiaoMa.GetComponent<BtnGongjuTest>().obj = Temp_TiaoMaPar;

        clickBtn_qingchu();
    }

    /// <summary>
    /// 取消按钮
    /// </summary>
    void clickBtn_quxiao()
    {
        Btn_Date.instance.UI_TiaoMa.gameObject.SetActive(false);
    }

    /// <summary>
    /// 清除按钮,删除所有上方已显示的UI。重新选择
    /// </summary>
    void clickBtn_qingchu()
    {
        if (Last_TiaoMa > 0)
        {
            Last_TiaoMa = 0;

            //删除上方显示的UI
            for (int i = 0; i < 8; i++)
            {
                if (BG_TiaoMa_S[i].transform.childCount != 0)
                {
                    Destroy(BG_TiaoMa_S[i].transform.GetChild(0).gameObject);
                }
            }
            //清除保存的条码下标
            Index_TiaoMa.Clear();
        }
    }
}

相关文章

  • Unity 键盘条码

    1、键盘输入选择条码 ,挂在每一个按钮上 index:0~35 2、制作条码脚本,配合jianpan脚本使用

  • 条码扫描器日常保养维护及注意事项

    条码扫描器是一款电脑周边设备,是属于输入设备,它的功能相当于电脑的键盘。主要是通过条码扫描器里的光学原件及电路,将...

  • Javascript判断扫码枪的输入,以及扫码后提交表单数据

    条码扫描器其实就是一种输入设备,跟键盘一样。在控制台打印扫描过程,可以看出,扫描过程就像是在键盘上敲击相应的键,k...

  • 第二十三节 实现左右移动方块

    01.监测按键 因为键盘什么时候按下是不确定的,所以必须要实时监测是否按下了键盘,而Unity中的Update()...

  • Unity 基础 - Input 类

    任何一款游戏都必须和用户进行交互才行,最常用的就是通过键盘和鼠标进行交互,在 Unity 中想要获取用户的键盘或鼠...

  • 物流条码的特点-idata数据采集器完全适用

    商品条码在当今已有广泛应用,而物流条码扫描器则刚刚起步。物流条码与通用商品条码相比,有着许多不同之处: 1、标识对...

  • TSC条码打印机具有哪些优势

    和其它商业级工业级的条码打印机相比,TSC条码机有哪些优势呢?行业都需要使用TSC条码机来完成大量的条码打印操作,...

  • 如何在条码中插入字符

    在条码生成软件生成条码标签时,有时有客户需要在条码中加入一些特殊字符,如字符“-”、“/”、“*”、“&”等,那么...

  • 如何减少条码打印机的故障

    条码标签打印机出现故障是很麻烦的事情,今天辰翔条码就带大家了解一下条码打印机减少故障的七大关键,从而减少条码...

  • 条码数据线的一些常见问题

    条码扫码器,又称为条码阅读器,条码扫描枪、条形扫描枪及条形阅读器。它是用于读取条码所包含信息的阅读设备,利用光学原...

网友评论

      本文标题:Unity 键盘条码

      本文链接:https://www.haomeiwen.com/subject/fmcuihtx.html