Unity 扫描 二维码
2018-01-31 19:26
260 查看
Unity扫描二维码有2中有以下两种实现方式:
1.使用原生开发,然后Unity里调用
2.使用Unity开发,利用zxing.net解码
比较2种方式,1的开发难度较高,需要相关android和ios开发的知识才能实现界面定制,所以方法2会比较适用,界面定制简单,也不用复杂去开发原生插件。下面来说下第二种开发怎么做。
首先需要一个下载一个zxing.net库,大家可以去官网下载,地址:点击打开链接。
原理就是使用WebCamTexutre调用摄像头,将WebCamTexutre赋到一张UI rawimage上面,每一帧读取,给zxing解码
1.使用原生开发,然后Unity里调用
2.使用Unity开发,利用zxing.net解码
比较2种方式,1的开发难度较高,需要相关android和ios开发的知识才能实现界面定制,所以方法2会比较适用,界面定制简单,也不用复杂去开发原生插件。下面来说下第二种开发怎么做。
首先需要一个下载一个zxing.net库,大家可以去官网下载,地址:点击打开链接。
原理就是使用WebCamTexutre调用摄像头,将WebCamTexutre赋到一张UI rawimage上面,每一帧读取,给zxing解码
using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using ZXing; namespace miwu { public class QRScaner : MonoBehaviour { public delegate void OnDecodSuccess(string data); public OnDecodSuccess OnDecodSuccessHandler; public int BlockWidth = 350; public Vector2 UIResolution = new Vector3(1334f, 750f); //UI默认开发分辨率 private Vector2 rectTop; private WebCamTexture webCamTexture; private bool Decoding = false; BarcodeReader mBarcodeReader = new BarcodeReader(); private Texture2D decodeTex; private void Start() { BlockWidth =(int)( BlockWidth / UIResolution.y * Screen.height); //自适应扫描框 rectTop = new Vector2((Screen.width - BlockWidth) / 2, (Screen.height - BlockWidth) / 2); webCamTexture = new WebCamTexture(Screen.width, Screen.height, 60); this.GetComponent<RawImage>().texture = webCamTexture; StartScanQRCode(); } /// <summary> /// 开始扫描 /// </summary> public void StartScanQRCode() { Decoding = true; webCamTexture.Play(); StartCoroutine("DecodingQRCode"); } /// <summary> /// 停止扫描 /// </summary> public void StopScanQRCode() { Decoding = false; StopCoroutine("DecodingQRCode"); webCamTexture.Stop(); } /// <summary> /// 重新开始解码 /// </summary> public void ReDecode() { Decoding = true; StartCoroutine("DecodingQRCode"); } /// <summary> /// 是否解码中 /// </summary> /// <returns></returns> public bool isDecoding() { return Decoding; } IEnumerator DecodingQRCode() { while (Decoding) { yield return new WaitForEndOfFrame(); decodeTex = new Texture2D(BlockWidth, BlockWidth, TextureFormat.ARGB32, true); decodeTex.ReadPixels(new Rect(rectTop.x, rectTop.y, BlockWidth, BlockWidth), 0, 0, false); //byte[] bytes = decodeTex.EncodeToPNG(); //System.IO.File.WriteAllBytes("test.png", bytes); //Decoding = false; //yield break; var data = mBarcodeReader.Decode(decodeTex.GetPixels32(), decodeTex.width, decodeTex.height); if (data != null) { OnDecodSuccessHandler(data.Text); Decoding = false; yield break; } } } } }
相关文章推荐
- iOS中使用ZBar扫描二维码自定义扫描界面
- iOS开发--二维码/条形码(扫描(可区域)和生成)
- iOS- 详解如何使用ZBarSDK集成扫描二维码/条形码,点我!
- android 5.1 api21以上怎么使用google zxing 扫描二维码
- 扫描二维码下载app,判断是Android还是ios,并跳转到不同的下载地址
- Android 基于google Zxing实现二维码、条形码扫描,仿微信二维码扫描效果
- Android 基于google Zxing实现二维码、条形码扫描,仿微信二维码扫描效果
- Android 基于google Zxing实现二维码、条形码扫描,仿微信二维码扫描效果(推荐)
- 利用Zbar来实现iOS中扫描二维码
- 二维码扫描灵敏度
- iOS 扫描二维码,条形码的实现
- 使用IOS7原生API进行二维码条形码的扫描
- 二维码框架ZBarSDK的使用和自定义二维码扫描界面方法
- 基于MUI框架的使用HTML5+实现的二维码扫描功能
- SYBarcodeManager二维码的扫描与生成
- Android之扫描二维码&开启闪光灯
- Unity中生成二维码
- 生成二维码 可长按扫描
- QRCode 扫描二维码、扫描条形码、相册获取图片后识别、生成带 Logo 二维码、支持微博微信 QQ 二维码扫描样式