Unity之生成扫描二维码

article/2025/10/23 22:06:35

Unity之生成扫描二维码

  • Unity之生成扫描二维码
    • 前言
      • 开篇
      • Unity版本及使用插件
    • 正题
      • 前期准备
        • 首先生成二维码
        • 然后需要扫描二维码
        • 该使用了
      • 挂载脚本绑定按钮和输入框
      • 运行内容
        • 生成二维码
        • 扫描二维码
    • 结尾
      • 唠家常
    • 今日有推荐

Unity之生成扫描二维码

前言

开篇

  • 又到了一周一分享啦,今儿小黑为了给小可爱一个好玩的,想来想去不知道弄什么。
  • 后来一想,就制作一个生成和扫描二维码的软件吧。

Unity版本及使用插件

Unity 2020.4.4f1
zxing.unity.dll 👉 下载地址 👈

正题

前期准备

  • 1、创建项目。
  • 2、创建Plugins文件夹并且放入 zxing.unity.dll
  • 3、编写脚本

首先生成二维码

using UnityEngine;
using UnityEngine.UI;
using ZXing;/// <summary>
/// 二维码的生成类
/// </summary>
public class QRCodeDraw : MonoBehaviour
{public static QRCodeDraw _Instance;private void Awake() => _Instance = this;/// <summary> 绘制好的二维码 </summary>public Image image_QRCode;//二维码绘制类BarcodeWriter barcodeWriter;    /// <summary>/// 将制定字符串信息转换成二维码图片信息/// </summary>/// <param name="formatStr">要生产二维码的字符串信息</param>/// <param name="width">二维码的宽度</param>/// <param name="height">二维码的高度</param>/// <returns>返回二维码图片的颜色数组信息</returns>Color32[] GeneQRCode(string formatStr, int width, int height){//绘制二维码前进行一些设置ZXing.QrCode.QrCodeEncodingOptions options = new ZXing.QrCode.QrCodeEncodingOptions();//设置字符串转换格式,确保字符串信息保持正确options.CharacterSet = "UTF-8";//设置绘制区域的宽度和高度的像素值options.Width = width;options.Height = height;//设置二维码边缘留白宽度(值越大留白宽度大,二维码就减小)options.Margin = 1;               //实例化字符串绘制二维码工具barcodeWriter = new BarcodeWriter { Format = BarcodeFormat.QR_CODE, Options = options };//进行二维码绘制并进行返回图片的颜色数组信息return barcodeWriter.Write(formatStr);}  /// <summary>/// 根据二维码图片信息绘制指定字符串信息的二维码到指定区域/// </summary>/// <param name="str">要生产二维码的字符串信息</param>/// <param name="width">二维码的宽度</param>/// <param name="height">二维码的高度</param>/// <returns>返回绘制好的图片</returns>Texture2D ShowQRCode(string str, int width, int height){//实例化一个图片类Texture2D t = new Texture2D(width, height);//获取二维码图片颜色数组信息Color32[] col32 = GeneQRCode(str, width, height);//为图片设置绘制像素颜色信息t.SetPixels32(col32);//设置信息更新应用下t.Apply();//将整理好的图片信息显示到指定区域中return t;}    /// <summary>/// 开始绘制指定信息的二维码/// </summary>/// <param name="formatStr">要被绘制的信息</param>public void DrawQRCode(string formatStr){//Debug.Log(formatStr);//注意:这个宽高度大小256不要变。不然生成的信息不正确//256有可能是这个ZXingNet插件指定大小的绘制像素点数值Texture2D t = ShowQRCode(formatStr, 256, 256);//转为imageSprite image = Sprite.Create(t, new Rect(00, 0, t.width, t.height),new Vector2(0.5f,0.5f));//显示到UI界面的图片上///texture_QRCode = t;image_QRCode.sprite = image;UnityTools.Debuger.Log("想要生成二维码的内容为:" + formatStr);}
}

然后需要扫描二维码

using UnityEngine;
using UnityEngine.UI;
using ZXing;
/// <summary>
/// 二维码扫描识别类
/// </summary>
public class QRCodeScanning : MonoBehaviour
{public static QRCodeScanning _Instance;private void Awake() => _Instance = this;[System.NonSerialized]public bool bool_Result;[System.NonSerialized]/// <summary> 扫描信息 </summary>public string str_ScanInfo;/// <summary> 摄像机映射显示区域 </summary>///public Texture cameraTexture;public Image cameraTexture;private WebCamTexture webCamTexture;//摄像机映射纹理//二维码识别类BarcodeReader barcodeReader;//库文件的对象(二维码信息保存的地方)/// <summary>/// 开启摄像机和准备工作/// </summary>void DeviceInit(){//1、获取所有摄像机硬件WebCamDevice[] devices = WebCamTexture.devices;//2、获取第一个摄像机硬件的名称string deviceName = devices[0].name;//手机后置摄像机//3、创建实例化一个摄像机显示区域webCamTexture = new WebCamTexture(deviceName: deviceName);//4、显示的图片信息//cameraTexture = webCamTexture;//Debuger.Log(webCamTexture.width + "_____"+ webCamTexture.height);//Texture2D texture2D = Texture2Texture2D(webCamTexture);//Sprite sprite = Sprite.Create(texture2D, new Rect(0, 0, texture2D.width, texture2D.height), new Vector2(0.5f, 0.5f));//cameraTexture.sprite = sprite;//5、打开摄像机运行识别if (webCamTexture.isPlaying) return;webCamTexture.Play();//6、实例化识别二维码信息存储对象barcodeReader = new BarcodeReader();}Color32[] data;//二维码图片信息以像素点颜色信息数组存放/// <summary>/// 识别摄像机图片中的二维码信息/// 打印二维码识别到的信息/// </summary>void ScanQRCode(){if (!webCamTexture.isPlaying) return;//7、获取摄像机画面的像素颜色数组信息data = webCamTexture.GetPixels32();//8、获取图片中的二维码信息Result result = barcodeReader.Decode(data, webCamTexture.width, webCamTexture.height);//如果获取到二维码信息了,打印出来if (result != null){//Debuger.Log(result.Text);//===》==》===》 这是从二维码识别出来的信息str_ScanInfo = result.Text;//显示扫描信息UnityTools.Debuger.Log("扫描结果为:" + str_ScanInfo);_Instance.bool_Result = true;//扫描成功之后的处理IsScanning = false;webCamTexture.Stop();cameraTexture.sprite = null;}}bool IsScanning = false;float interval = 3;//扫描识别时间间隔    /// <summary>/// 扫描/// </summary>public void Scanning(){if (webCamTexture != null && webCamTexture.isPlaying) return;//Debuger.Log("开始扫描");DeviceInit();IsScanning = true;}public void Stop(){if (!webCamTexture.isPlaying) return;//Debuger.Log("停止扫描");webCamTexture.Stop();IsScanning = false;}Texture2D texture2D;private void Update(){if (IsScann/ing){texture2D = Texture2Texture2D(webCamTexture);Sprite sprite = Sprite.Create(texture2D, new Rect(0, 0, texture2D.width, texture2D.height), new Vector2(0.5f, 0.5f));cameraTexture.sprite = sprite;//每隔一段时间进行一次识别二维码信息interval += Time.deltaTime;if (interval >= 3){interval = 0;ScanQRCode();//开始扫描}}}//以下参考博客https://blog.csdn.net/a673544319/article/details/82751883Texture2D Texture2Texture2D(Texture texture){Texture2D texture2D = new Texture2D(texture.width, texture.height, TextureFormat.RGBA32, false);        RenderTexture currentRT = RenderTexture.active;        RenderTexture renderTexture = RenderTexture.GetTemporary(texture.width, texture.height, 32);Graphics.Blit(texture, renderTexture);RenderTexture.active = renderTexture;texture2D.ReadPixels(new Rect(0, 0, renderTexture.width, renderTexture.height), 0, 0);texture2D.Apply();RenderTexture.active = currentRT;RenderTexture.ReleaseTemporary(renderTexture);return texture2D;}
}

该使用了

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;public class QRCodeController : MonoBehaviour
{public InputField inputField;public void InstanceQRCode(){QRCodeDraw._Instance.DrawQRCode(inputField.text);}public void ScaningQRCode(){QRCodeScanning._Instance.Scanning();}
}

挂载脚本绑定按钮和输入框

neihao

运行内容

生成二维码

生成二维码

扫描二维码

扫描二维码

结尾

唠家常

  • 小黑的今日分享结束啦,小伙伴们你们get到了么,你们有没有更好的办法呢,可以评论区留言分享,也可以加小黑的QQ:841298494,大家一起进步。
  • 小黑现在好想让小可爱来北京找我呀,哈哈哈哈哈。

今日有推荐

推荐内容:Texture 转为 Texture2D,博客链接:
Unity中Texture转Texture2D👈👇博客链接 https://blog.csdn.net/a673544319/article/details/82751883

  • 客官,看完get之后记得点赞哟!
  • 小伙伴你还想要别的知识?好的呀,分享给你们😄
  • 小黑的杂货铺,想要什么都有,客官来杯茶喝啊

程序的道路上学习永不停止,探索随时进行。
Let’s go. Just do it. We can.


http://chatgpt.dhexx.cn/article/fYCP7DYK.shtml

相关文章

Web端QR二维码扫描实现

要在Web端实现基于摄像头的实时QR二维码扫描&#xff0c;需要包含摄像头控制和QR二维码解码两个部分的代码。Dynamsoft把这两部分封装在了一个JS SDK中&#xff0c;使用起来非常方便。 开发文档 https://www.dynamsoft.com/barcode-reader/programming/javascript/api-refere…

手机chrome扫描二维码_90%的用户都不知道这项Chrome隐藏功能如何开启,超级实用!...

为了增强浏览器的功能,我们通常会在Chrome上安装各种插件。 甚至一些需要第三方电脑软件才能实现的,通过插件都可以在浏览器内完成。 但是,Chrome的运行机制是把所有打开的网页标签、插件、播放的视频都拆成独立的进程。 这样的方法有利也有弊,弊端就是插件装的太多,Chrom…

VS2017 Xamarin扫描二维码并跳转网页

【本文章并非完全原创&#xff0c;是结合网上查询的各种资料来进行整合改造&#xff0c;成为可以使用的代码】 本文要实现的功能为&#xff0c;扫描一个二维码&#xff0c;读出扫描结果&#xff0c;如果结果中含有http://则会自动打开浏览器跳转页面。 &#xff08;该二维码…

Fiori 实现在网页端调用摄像头扫描二维码进行识别

我们在UI5官方文档上进行搜索Scan,是只能找到一个BarcodeScanner的&#xff0c;这个API是无法实现我们这个需求的&#xff0c;所以如果有朋友收到这种需求&#xff0c;不想做的情况下&#xff0c;是可以推脱一下&#xff0c;把问题抛给SAP的&#xff08;笑&#xff09;。既然写…

扫描二维码登录原理

手机扫码二维码实现登录某个网站的操作过程为&#xff0c;手机登录某个APP&#xff0c;利用“扫一扫”功能扫描网页上的二维码&#xff0c;扫描成功后&#xff0c;提示“登录网页版XX”&#xff0c;同时网页上显示“成功扫描 请在手机点击确认以登录”&#xff0c;手机端点击“…

【H5扫描二维码】

H5调用摄像头识别二维码-3种方法 一.使用html5-qrcode实现二维码扫描1).下载html5-qrcode2).使用 二.使用zxing/library实现二维码扫描1).下载zxing/library2).使用 三. 使用jsQR实现二维码扫描1).使用父组件直接引用mumu-getQrcode组件 vue2中使用jsQR、zxing/library、html5-…

二维码软件如何扫描二维码打开网页

在平常生活中,我们扫描二维码付款或者扫描二维码查看某品牌的网站这些都是我们经过扫描二维码跳转到了对方的网站网页页面内容,在使用中琅二维码软件制作时,我们可以先将需要跳转的网页保存在一个文档中,然后作为二维码内容添加进二维码即可。 一、制作单个跳转网页的二维…

扫描二维码后可以自动跳转到网页

现在我们的生活中随处可见二维码的身影&#xff0c;扫码付款&#xff0c;扫描进入小程序&#xff0c;扫码关注等等。二维码可以存储各种信息&#xff0c;主要包括网址、名片、文本信息、特定代码等。今天跟大家分享使用条码软件生成二维码&#xff0c;扫描后可以跳转到网址链接…

厉害了网页扫码,所有方法都给你总结到这了,赶紧收藏

最近做一个项目&#xff0c;要通过扫一扫查询对应的信息&#xff0c;由于现在已经有一部分二维码已被生成&#xff0c;为了兼顾已生成的二维码&#xff0c;所以需要使用网页的扫一扫功能去完成项目。 项目使用技术栈&#xff1a;vue2 方案一、js 原生 热心的同事帮我已经找好…

怎样测试手机的流量

在找过GT后 我们发现用路由器测试比较方便&#xff0c;可以把所有的终端都连到路由器上&#xff0c;查看各端的流量

流量过小如何做A/B测试

AB测试对于产品和运营优化的重要性有目共睹。为了能更快的得到试验结果&#xff0c;试验流量越大越好。但是当流量不够的时候怎么办呢&#xff1f;小流量AB测试能不能做&#xff1f;能&#xff01;下面有多个节约流量的方法。 一、消除异常数据的影响 例如&#xff1a;当点击…

无线专项测试--流量测试(下)

这篇文章主要是想介绍下流量专项测试的另外一种方法tcpdumpWireshark抓包测试法。 在后台系统的开发和测试中&#xff0c;借助工具抓取网络包来进行网络层的分析是一种非常常用的技术手段&#xff0c;常用的抓包工具有Windows下的Wireshark工具和Linux下的tcpdump。由于android…

android性能测试 app 实时流量获取

下面介绍几种获取app流量的统计规则&#xff1a; 分析方法D ①如何获取uid? 1.先获取进程pid (adb shell ps |findstr 包名) 2.进入到proc/pid/status 文件中 C:\Users\chenhui>adb shell PD1816:/ $ cd proc/ PD1816:/proc $ cd 20814 PD1816:/proc/20814 $ cd status /s…

安卓app测试之流量监控

一、查看PID 通过ps命令查看&#xff1a;ps | grep packageName 案例&#xff1a;adb shell "ps | grep tv.danmaku.bili" adb shell "ps | grep tv.danmaku.bili$" 二、查看UID 1、通过查看packages.list adb shell cat /data/system/packages.list |…

Android的app性能测试--流量

测试场景&#xff1a;在手机上面点击想要测试的界面或者一组场景&#xff0c;然后查看用了多少流量。 方法一&#xff1a;使用流量测试的工具&#xff1a;1.tcpdump抓包 2 wireshark进行分析 tcpdump介绍&#xff1a;tcpdump是一款用于截取网络分组&#xff0c;并输出分组内容的…

APP性能测试:启动时间、CPU、耗电量、流量、内存

app的启动与停止 启动app的命令&#xff1a;adb shell am start -n packageName/activity 查看被测应用app的包名和活动名activity的命令&#xff1a; adb shell "dumpsys window | grep mCurrentFocus" 这里以调出系统通讯录为例。 查看app启动时间命令&#x…

Charles 流量配置(弱网测试)、断点调试

一、流量配置 流量配置主要是用来检测软件&#xff08;APP&#xff09;在不同的网络环境下的一个表现&#xff0c;例如出现丢包闪退等情况. 流量配置主要有以下四步&#xff1a; 在 Charles 窗口中点击菜单 “Proxy” &#xff0c;选择 "Throttle Setting" 进行网络…

APP测试内容 -- 流量测试常见测试方法

APP测试内容 -- 流量测试常见测试方法 大部分摘自&#xff1a;https://blog.csdn.net/baidu_21833433/article/details/63255182#commentBox 一、Android自带统计功能&#xff08;统计流量总数值&#xff09; proc/uid_stat/{UID}/tcp_snd和tcp_rcv UID是每个app安装时候分配的…

app性能测试:(三)流量监控

app性能测试&#xff1a;&#xff08;三&#xff09;流量监控 下面对流量监控进行分析&#xff1a; 获取进程ID指令 adb shell “ps | grep 包名”获取进程ID流量adb shell cat /proc/pid/net/dev pid换成第一步获取到的进程ID receive是指当前进程接收的数据&#xff0c;tra…

APP的流量测试(android和iOS的流量测试)

1、准备 性能测试工具—fiddler、电脑、Google浏览器、手机、无线&#xff08;手机需要和电脑在一个网段里&#xff09; 2、知识点 1&#xff09;掌握fiddler工具安装&#xff08;这个相对比较简单&#xff0c;大家百度进行安装即可&#xff09; 也可以访问这个网页进行下载…