画像ファイルをアップロードして
アップしたURLをQRコードにして表示する仕組みが作りたいので
まずはQRコードを表示する仕組みを勉強します。
体験した様子を撮影してQRコードで各自DL仕組みがあれば拡散されやすい。#展示知見
— シロフード (@sirohood_exp) September 28, 2019
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カメラの映像を自動で保存するやつ勉強する。




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