Unity的UGUI产生二维码功能的开发小计

前言:在开发雀巢项目的时候,有一个拍照扫取二维码获取照片的功能,需要使用Unity开发一个产生二维码的功能。后来经过各种查找,终于开发出了这个功能,具体开发过程如下所示。
1.首先在工程中导入产生二维码的zxing插件,此插件可以到Zxing网站下载,我也可以给大家分享,可以给我留言或私聊。在Assets文件夹下建立Plugins文件夹,将Zxing插件放进去,如下图所示:
Unity的UGUI产生二维码功能的开发小计_第1张图片
2.在场景中创建一个Raw Image组件,作为显示二维码的组件,如下图所示:
Unity的UGUI产生二维码功能的开发小计_第2张图片
3.创建QRcode.cs脚本,将产生二维码的代码写在里面,具体代码如下所示:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using ZXing;
using ZXing.QrCode;
using UnityEngine.UI;

public class QRcode : MonoBehaviour
{
    #region 变量
    //用于显示生成二维码的RawImage
    public RawImage m_QRcode;
    //申请一个写二维码的变量
    private BarcodeWriter m_barcodeWriter;
    //网站地址
    string webUrl = "";
    #endregion

    #region 一般方法
    // Use this for initialization
    void Start ()
    {
        ToBeginString();
        StartCoroutine(ToShowQRcode());
	}
    #endregion

    #region 私有方法
    /// 
    /// 初始化字符串
    /// 
    void ToBeginString()
    {
    	//此处为二维码链接
        webUrl = "二维码链接";
    }

    /// 
    /// 展示二维码的协程
    /// 
    /// 
    IEnumerator ToShowQRcode()
    {
        yield return new WaitForSeconds(0.1f);
        ShowQRCode(webUrl,256,256);
    }

    /// 
    /// 显示绘制的二维码
    /// 
    /// 
    /// 
    /// 
    void ShowQRCode(string s_str,int s_width,int s_height)
    {
        //定义texture2D并填充
        Texture2D tTexture = new Texture2D(s_width, s_height);
        //绘制相对应的贴图纹理
        tTexture.SetPixels32(GeneQRCode(s_str,s_width,s_height));
        tTexture.Apply();
        //赋值贴图
        m_QRcode.texture = tTexture;
    }

    /// 
    /// 返回对应的颜色数组
    /// 
    /// 
    /// 
    /// 
    /// 
    Color32[] GeneQRCode(string s_formatStr,int s_width,int s_height)
    {
        //设置中文编码格式,否则中文不支持
        QrCodeEncodingOptions tOptions = new QrCodeEncodingOptions();
        tOptions.CharacterSet = "UTF-8";
        //设置宽高
        tOptions.Width = s_width;
        tOptions.Height = s_height;
        //设置二维码距离边缘的空白距离
        tOptions.Margin = 1;
        //重置申请写二维码变量类
        m_barcodeWriter = new BarcodeWriter { Format = BarcodeFormat.QR_CODE,Options = tOptions };
        //将需要隐藏在码后面的信息赋值上
        return m_barcodeWriter.Write(s_formatStr);
    }
    #endregion
}

4.将此脚本挂载到场景中的物体中,如下图所示:
Unity的UGUI产生二维码功能的开发小计_第3张图片
5.运行工程,发现已经产生了二维码,大功告成!
Unity的UGUI产生二维码功能的开发小计_第4张图片

你可能感兴趣的:(Unity插件使用小计)