在Unity 3D中使用C#读取和生成QR码-简单的方法

我在将QR代码生成器/渲染器和QR阅读器添加到Unity项目的GUI中时遇到了非常困难的时光,这是简单的方法。

我在这里有点夸张。 我们在这里只谈论两天,但是在当今时代,如此简单的功能仍然是太多的时间,我觉得其他人在追求自己的游戏实际目标以解决这一侧重开发任务时可能会被延误。

您可以购买许多付费QR插件,但是对于大多数(至少我所发现的所有)来说,评论不推荐它们的用法或以其他方式宣传它们值得一买。

我发现自己不得不建立在万维网上找到的库(因为Unity仍然仅适用于〜.NET 2),并且经历了痛苦的试验和错误过程,尝试了专门为Unity创建或不为Unity创建的多个库。 这也可能是由于我之前没有使用过QR库,所以我不一定熟悉哪些是有效的,哪些是旧的。

顺利的解决方案

兴兴 图书馆 一旦让它起作用,就为我创造了奇迹。 此外,它允许您使用其他类型的条形码。

您可以下载我的DLL版本,您需要将其添加为Unity项目中的参考。

它是专门为与Unity运行而量身定制的(但不是我自己设计的): zxing.unity.dll for Unity。

我将为您省去更多无聊的细节,并提供示例代码,您可以在几分钟内对其进行调整并在自己的Unity项目中进行工作。

 使用ZXing; 
使用ZXing.QrCode;

私有WebCamTexture camTexture;
私人Rect screenRect;
 无效Start(){ 
screenRect = new Rect(0,0,Screen.width,Screen.height);
camTexture =新的WebCamTexture();
camTexture.requestedHeight = Screen.height;
camTexture.requestedWidth =屏幕宽度;
如果(camTexture!= null){
camTexture.Play();
}
}

无效的OnGUI(){
//在屏幕上绘制相机
GUI.DrawTexture(screenRect,camTexture,ScaleMode.ScaleToFit);
//进行阅读-为了提高性能,您可能希望尝试阅读的次数少于在屏幕上绘制的次数
尝试{
IBarcodeReader条码阅读器=新的条码阅读器();
//解码当前帧
var结果=条码读取器。解码(camTexture.GetPixels32(),
camTexture.width,camTexture.height);
if(结果!=空){
Debug.Log(“来自QR的解码文本:“ + result.Text);
}
  } catch(Exception ex){Debug.LogWarning(ex.Message);  } 
}

最终,它是如此的简单明了,由于花了很多时间尝试Unity教程和库,我出于沮丧而摔在桌子上。

没有理由为那些大部分损坏的QR插件付款,现在有吗?

在Unity中从文本渲染QR码

这在大多数库中都有效,但是您可以使用这两个目的之一(读取和写入QR)。

 私有静态Color32 []编码(字符串textForEncoding, 
整数宽度,整数高度){
var writer = new BarcodeWriter {
格式= BarcodeFormat.QR_CODE,
选项=新的QrCodeEncodingOptions {
高度=高度,
宽度=宽度
}
};
返回writer.Write(textForEncoding);
}

更新:使用以下方法生成2D纹理并在GUI中显示。

 公共Texture2D generateQR(string text){ 
var encoding = new Texture2D(256,256);
var color32 = Encode(文本,encoded.width,encoded.height);
编码的.SetPixels32(color32);
encode.Apply();
返回编码
}

这是一个简短的示例,说明如何使用GUI API进行显示。

  Texture2D myQR = generateQR(“ test”); 
如果(GUI.Button(新Rect(300、300、256、256),myQR,GUIStyle.none)){}

这应该允许您将QR码显示为按钮。

这么难吗?

不,这就是重点。 关于这个主题,有无数尚未完全回答的问题散布在网络上(在Unity范围内)。

对于(新的Unity)开发人员来说,它应该很容易并且更容易使用。 QR码在增强现实应用程序中可以有许多用途,我认为这些简单的示例应该成为实际Unity文档的一部分。

nenuadrian / qr-code-unity-3d读取生成
qr-code-unity-3d-read-generate –在Unity 3D github.com中生成QR码/扫描QR码

免责声明

我正在使用Unity 5.3.5对此进行实验