画像ファイルをアップロードして
アップした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カメラの映像を自動で保存するやつ勉強する。
※コメントは承認後に表示されます。
コメントを公開されたくない場合、名前の後に「:非公開」とつけてください。