关注公众号,获取更多干货。
最近看到公司里好多人在分享网页链接的时候都用二维码相互传递,然后就突然想到如果在Unity的项目中需要实时创建二维码进行分享链接的时候要怎么办。
然后就开始在网上搜了一下“Unity 创建二维码”
结果出来的教程大多都是zxing的使用啊,什么什么的。
但是如果大家在度娘那直接搜“二维码”,会发现有好多做二维码实时生成的,并不需要接什么dll或者其他的东西。
那么这篇文章呢,并不是说zxing不方便,或者说我有什么更好的解决办法,只是换一种思路,用我这个比较笨的脑子,用另一种方式去解决问题。
其实大多数的二维码生成网站都会提供一些API,有的直接用Get或者Post请求就可以返回一个图片。
有的则是json或者是一些其他的东西。
直接返回图片的,在这里我就不做讲解了,因为WWW.texture就可以在Unity里直接使用了。
那么希望大家看完我下面的一系列操作,可以在以后对待问题的时候,能够用在一瞬间想到很多种解决方法,或者在没有解决方法的时候,要想到把自己做不了,并且别人能做的,拿过来自己用。
废话说了一大堆,现在开始整理我的思路。
首先,我选择的是草料二维码
在网页的右侧,有一个更多
点开后,选择API服务
点开后下拉,找到范例。
我们复制范例的链接地址,在浏览器访问
可以看到,这个API返回的是一个Html静态网页。
那么问题来了,这在Unity中,要这怎么办,才能拿到图片呢?
首先,看一下他们的参数说明
https://cli.im/api/qrcode/code?text=二维码内容&mhid=美化模版id
我们编写一个:
“https://cli.im/api/qrcode/code?text=http://youku.com&mhid=5EqSDQzsmc0hMHcsKNZTMao”
并在Unity中,用WWW去请求,然后Print一下www.text
可以看到,控制台的输出就是一个Html内容。但是这种数据我们并不能直接使用。
但是,既然我们访问这个链接可以看到二维码,那么在这一堆数据中,就能找到我们要的信息。
很简单,body中有一个img标签,src代表图片地址,我们只要截取到地址,就可以获得我们想要东西。
代码如下:
WWW w = new WWW ("https://cli.im/api/qrcode/code?text=http://youku.com&mhid=5EqSDQzsmc0hMHcsKNZTMao");
yield return w;
print(w.text);
//获取'src=" //' 后所有的数据
string s = w.text.Substring(w.text.IndexOf("<img src=") + 12, w.text.Length - (w.text.IndexOf("<img src=") + 12));
//截取src="" 内部的链接地址,不包括'//'
string result = s.Substring(0, s.IndexOf("\""));
print(result);
我们再次查看控制台
复制截取到的链接地址并访问
这样,就找到了我们需要的数据,在用WWW去请求我们截取到的地址。、
然后在用www返回的texture传给Unity去创建Sprite也好,直接使用Texture2D也好,反正我们现在可以将我们想要的表达的变成了一个二维码并展示出来了。
本文永久链接:http://blog.csdn.net/aries_h/article/details/72845925