首先下载插件ZXing,链接在下面。解压后把unity文件夹的文件导入unity中。
注意:二维码生成目前只能生成256*256的,不然会报所引超出界限错误。
链接:https://pan.baidu.com/s/1_En2Tc2kdiDw8fvvzJZKYQ
提取码:vl5k
代码如下:
using System.Collections; using System.Collections.Generic; using UnityEngine; using ZXing; using ZXing.QrCode; public class QRCodeFactory { #region 单例 private static QRCodeFactory instance; public static QRCodeFactory Instance { get { if (instance == null) { instance = new QRCodeFactory(); } return instance; } } #endregion /// <summary> /// 直接返回图片 /// </summary> /// <param name="content"></param> /// <param name="margin"></param> /// <param name="width"></param> /// <param name="height"></param> /// <returns></returns> public Texture2D GetTexture2D(string content, int margin = 0, int width = 256, int height = 256) { if (string.IsNullOrEmpty(content)) { Debug.Log("错误!数据不能为空!"); return null; } Texture2D t2d = new Texture2D(width, height); t2d.SetPixels32(GetQRcode(content, margin, width, height)); t2d.Apply(); return t2d; } /// <summary> /// 只返回生成二维码的颜色数据 /// </summary> /// <param name="content"></param> /// <param name="margin"></param> /// <param name="width"></param> /// <param name="height"></param> /// <returns></returns> public Color32[] GetQRcode(string content, int margin = 0, int width = 256, int height = 256) { if (string.IsNullOrEmpty(content)) { Debug.Log("错误!数据不能为空!"); return null; } BarcodeWriter bw = new BarcodeWriter //设置二维码变量类 { Format = BarcodeFormat.QR_CODE, //设置二维码格式 Options = new QrCodeEncodingOptions //设置编码格式 { CharacterSet = "UTF-8",// 设置中文模式 Height = height, //设置宽高 Width = width, Margin = margin //设置二维码的边距 } }; return bw.Write(content); } public Result CheckQRCode(Texture2D t2d) { if (t2d == null) { Debug.Log("错误!图片为空!"); return null; } Color32[] colorDatas = t2d.GetPixels32(); BarcodeReader barcodeRender = new BarcodeReader(); return barcodeRender.Decode(colorDatas, t2d.width, t2d.height);//将画面中的二维码信息检索出来 } }
using System.Collections;using System.Collections.Generic;using UnityEngine;using ZXing;using ZXing.QrCode;
public class QRCodeFactory{ #region 单例 private static QRCodeFactory instance;
public static QRCodeFactory Instance { get { if (instance == null) { instance = new QRCodeFactory(); } return instance; } }
#endregion
/// <summary> /// 直接返回图片 /// </summary> /// <param name="content"></param> /// <param name="margin"></param> /// <param name="width"></param> /// <param name="height"></param> /// <returns></returns> public Texture2D GetTexture2D(string content, int margin = 0, int width = 256, int height = 256) { if (content == "") { Debug.Log("错误!数据不能为空字符串!"); return null; } Texture2D t2d = new Texture2D(width, height); t2d.SetPixels32(GetQRcode(content, margin, width, height)); t2d.Apply(); return t2d; } /// <summary> /// 只返回生成二维码的颜色数据 /// </summary> /// <param name="content"></param> /// <param name="margin"></param> /// <param name="width"></param> /// <param name="height"></param> /// <returns></returns> public Color32[] GetQRcode(string content, int margin = 0, int width = 256, int height = 256) { if (content == "") { Debug.Log("错误!数据不能为空字符串!"); return null; }
BarcodeWriter bw = new BarcodeWriter //设置二维码变量类 { Format = BarcodeFormat.QR_CODE, //设置二维码格式 Options = new QrCodeEncodingOptions //设置编码格式 { CharacterSet = "UTF-8",// 设置中文模式 Height = height, //设置宽高 Width = width, Margin = margin //设置二维码的边距 } };
return bw.Write(content); } public Result CheckQRCode(Texture2D t2d) { if (t2d == null) { Debug.Log("错误!图片为空!"); return null; } Color32[] colorDatas = t2d.GetPixels32(); BarcodeReader barcodeRender = new BarcodeReader(); return barcodeRender.Decode(colorDatas, t2d.width, t2d.height);//将画面中的二维码信息检索出来 }}