コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】Android で QR コードからデータを読み込む方法

はじめに

「ZXing.Net」を Unity プロジェクトに導入することで
Android で QR コードからデータを読み込むことができるようになります

(iOS でも使用できますが、本記事では Android における使い方を紹介していきます)

目次

サンプルプロジェクト

ZXing.Net を使用して Android で QR コードからデータを読み込む処理を実装した
サンプルプロジェクトを上記リポジトリにアップしました

上記リポジトリの Unity プロジェクトをダウンロードして Android ビルドし、
Unity プロジェクト内に含まれている QRCode.png をカメラで読み込むと
画面に「Pikachu」と表示されることが確認できます

使い方

ZXing.Net の入手

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

上記のページにアクセスして「ZXing.Net.0.16.5.0.zip」を選択し、
ダウンロードした「ZXing.Net.0.16.5.0.zip」を展開します

そして展開したフォルダ内の「unity」フォルダを開いて
その中に存在する「zxing.unity.dll」を

f:id:baba_s:20191124173825p:plain

Unity プロジェクトに追加します

QR コードの作成

上記のスクリプトを Unity プロジェクトの Editor フォルダに追加して

f:id:baba_s:20191124175828p:plain

Unity メニューの「Tools > Create QRCode」を押すと

f:id:baba_s:20191124174507p:plain

Unity プロジェクト内に QR コードの画像ファイルが作成されます
この QR コードは「Pikachu」という文字列を含むデータとなります

// QR コードを読み込んだ取得できるデータ
var contents = "Pikachu";

スクリプト内の contents 変数で QR コードに含むデータを変更できます

QR コードの読み込み

上記のスクリプトを Unity プロジェクトに追加して

f:id:baba_s:20191124175052p:plain

シーンのゲームオブジェクトにアタッチします

f:id:baba_s:20191124175315p:plain

そして、シーンに Canvas を作成して Text と RawImage のオブジェクトを作成して

f:id:baba_s:20191124175322p:plain

適当な位置に配置します

Text オブジェクトには QR コードから読み込んだ文字列が表示されます
RawImage オブジェクトには Android カメラが写している画像が表示されます

f:id:baba_s:20191124175616p:plain

最後に Text オブジェクトと RawImage オブジェクトを
先ほどアタッチした QRCodeReader コンポーネントに設定します

Android ビルド

前項までで QR コードの作成と、読み込むプログラムの実装ができたので
Android ビルドして実機で確認します

f:id:baba_s:20191124180344j:plain

ビルドしたアプリが起動して、上記の確認ダイアログが表示されたら「許可」を押します

f:id:baba_s:20191124193252g:plain

これで、先ほど作成した QR コードをカメラで読み込むと
「Pikachu」という文字列が画面に表示されます

f:id:baba_s:20191124180808p:plain

もしも、カメラが写している画面の上下左右が逆になっている場合は
RawImage オブジェクトの Rotation を編集します

  • 左右反転している場合は Y に 180 と入力
  • 上下反転している場合は X に 180 と入力

以上が ZXing.Net を使用して Android で QR コードからデータを読み込む方法になります