UnityでQRコードを表示する

画像ファイルをアップロードして

アップしたURLをQRコードにして表示する仕組みが作りたいので

まずはQRコードを表示する仕組みを勉強します。

 

 

unityの記事書くのに毎回使用バージョンを書き忘れる・・・

今回は2018.4.3f1です。

 

参考:https://negipoyoc.com/blog/making-qrcode-with-unity/

 

◆使用するもの

Zxingというものが色んな言語やプラットフォームに対応してて良いらしい。

https://github.com/micjahn/ZXing.Net

 

◆作り方

Zxingを取得

ReleasesページでZXing.Net.0.16.4.0.zipをダウンロード(2019/09時点でVer 0.16.4.0)

 

解凍したフォルダからunityフォルダを見つける

 

その中のzxing.unity.dllをコピー

Unity内の Assetsフォルダ内にPluginsという名前のフォルダを作成して、この中に入れる

 

2D Object>Spriteオブジェクトを配置

(名前をQRcodeSpriteとしました)

 

スクリプトを作成

ちなみにサンプルスクリプトは先ほどのReleasesページから

ZXing.Net.Source.0.16.4.0.zipをDLして(ウイルス対策ソフトにひっかかるかも?)

フォルダを解凍して

ZXing.Net.Source.0.16.4.0\Base\Clients\UnityDemo\Assets内のBarcodeCam.csを参考にする。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using ZXing;        //QRコード作成に必要
using ZXing.QrCode; //QRコード作成に必要

public class QRcodeScript : MonoBehaviour
{

    public SpriteRenderer QRcodeSprite;//最終的に表示するSpriteRendererオブジェクト

    private Texture2D EncodedQRTextire;//エンコードして出来たQRコードのTxture2Dが入る

    private int QrTxtureW = 256;//作成するテクスチャサイズ
    private int QrTxtureH = 256;//作成するテクスチャサイズ

    string ImageLink;//QRコード化したいURL

    
    void Start()
    {

        //オブジェクトがアタッチされていなければ取得する
        if (QRcodeSprite == null){
            QRcodeSprite = GameObject.Find("QRcodeSprite").GetComponent<SpriteRenderer>();    
        }
        
        //新規の空のテクスチャを作成
        EncodedQRTextire = new Texture2D(QrTxtureW, QrTxtureH);
        
        //QRコードで表示するリンクを指定
        ImageLink = "https://sirohood.exp.jp/wp-content/uploads/2018/03/IMG_2065.jpg";
    
        //エンコード処理
        var color32 = Encode(ImageLink, EncodedQRTextire.width, EncodedQRTextire.height);

        //https://docs.unity3d.com/2018.4/Documentation/ScriptReference/Texture2D.SetPixels32.html
        //ピクセルカラーのブロックを設定
        EncodedQRTextire.SetPixels32(color32);
        
        //https://docs.unity3d.com/ja/2017.4/ScriptReference/Texture2D.Apply.html
        //エンコードで取得した情報で変更を適用する
        EncodedQRTextire.Apply();

        //スプライトを作成してオブジェクトに張り付け
        QRcodeSprite.sprite = Sprite.Create(EncodedQRTextire, new Rect(0,0,QrTxtureW,QrTxtureH),Vector2.zero);
         
    }

   


    //32 ビット形式での RGBA の色の表現
    //https://docs.unity3d.com/ja/2018.4/ScriptReference/Color32.html

    //エンコード処理(ここはサンプル通り)
    private static Color32[] Encode(string textForEncoding, int width, int height){
        var writer = new BarcodeWriter{
            Format = BarcodeFormat.QR_CODE,
            
            Options = new QrCodeEncodingOptions{
                Height = height,
                Width = width
            }
        };
        return writer.Write(textForEncoding);
   }


}

 

このスクリプトをSpriteオブジェクトに張り付けて実行するとQRコードが表示される。

 

意外と簡単だったし、今後作るアプリに組み込めるので良い!!

 

次はWEBカメラの映像を自動で保存するやつ勉強する。

関連記事




コメントを残す

※コメントは承認後に表示されます。
 コメントを公開されたくない場合、名前の後に「:非公開」とつけてください。