本記事について
この記事は CoreBluetoothForUnity Advent Calendar 2023 の1日目の記事です。
CoreBluetoothForUnity のインストール方法やサンプルの使い方を紹介します。
BLE の知識がなくても、Unity で iOS アプリをビルドできる方であれば、簡単に BLE 通信を試すことができます。
前提
- Unity で iOS アプリをビルドできること。
環境
- Unity 2022.3以降
- CoreBluetoothForUnity 0.4.0
- iPhone (iOS 13以降)
CoreBluetoothForUnity とは
Unity には Bluetooth 通信を行うための標準 API がありません。
本パッケージは UnityEditor (OSX) や Unity でビルドした iOS アプリで BLE (Bluetooth Low Energy) を使う機能を提供します。
- Core Bluetooth とほとんど同じ API
- OSS
本パッケージで何ができるのか
- Mac, iPhone 間でシンプルなデータを手軽に送受信
- M5Stack などの BLE デバイスとの通信
UMP でダウンロード可能なサンプルとして、以下の2つを用意しています。
iOS で確認する場合はビルドが必要ですが、UnityEditor であればサンプルをダウンロードしてサンプルシーンを開くだけで通信を試すことができます。
Light Control
Central | Peripheral |
---|---|
Button Information
Central | Peripheral |
---|---|
Core Bluetooth と API がほとんど同じであるメリット
- 本家のドキュメントを参考にすることが可能
- Core Bluetooth の知見をそのまま活かすことが可能
- 本家 Core Bluetooth の使い方と Unity Package 両方の使い方を学ぶ必要がないこと
OSS であるメリット
- issue によるバグ報告や機能要望ができること
- 修正の理由や意図を Pull Request や Commit Log から確認できること
インストール方法
Scoped Registry によるインストールが可能です。
Edit > Project Settings > Package Manager 以下の画像のように登録
Name: Teach310
URL: https://registry.npmjs.com
Scope: com.teach310
Package Manager で My Registries を選択することでパッケージが表示されます。
サンプルのインポート
Package Manager に Samples のタブが表示されており、そこからインポートできます。
本記事では 01_LightControl を使用します。
インポートすると以下のように配置されます。
SampleLightControl_CentralScene を開いて、色を選択できる画面であること
SampleLightControl_PeripheralScene を開いてLightがある3D空間が表示されていれば成功です。
サンプルのビルド
サンプルを使って UnityEditor (OSX) と iPhone 間で BLE 通信を試します。
以下の手順で進めます。
- ビルドするシーンを指定
- Build PostProcess を追加して、Bluetooth を有効にする
- Build
1. ビルドするシーンを指定
どちらでも動きますが、本記事では
色を指定する側 (Central) を iPhone, Light がある側 (Peripheral) を UnityEditor (OSX) で動かすことにします。
上部メニューの File > Build Settings を選択します。
まずは iOS にスイッチプラットフォーム。
そして、SampleLightControl_CentralScene を追加します。
2. Build PostProcess を追加して、Bluetooth を有効にする
iPhone で BLE を使うには、Info.plist に Bluetooth の許可を追加する必要があります。
To access Core Bluetooth APIs on apps linked on or after iOS 13, include the NSBluetoothAlwaysUsageDescription key
Unity でビルドする場合は、Build PostProcess で Info.plist を書き換えることができます。
そして、それを行うためのスクリプトはサンプルに用意してあります。
Package Manager を開き、Samples の BuildPostprocessor をインポートします。
3. Build
あとは通常の iOS ビルドと同じです。
初めてビルドする場合は以下のように許可を求められます。
これで準備完了です。
Mac と iPhone それぞれ Bluetooth を ON にしたうえで、iPhone はアプリを起動、 UnityEditor では SampleLightControl_PeripheralScene を再生してください。
画面右上に Ready と表示されたら、バーを動かすことで Light の色が変わるはずです。
おわりに
本記事では CoreBluetoothForUnity の特徴、Light Control サンプルの使い方を紹介しました。
サンプルさえ動かすことができれば、あとは中身の実装を学ぶことで応用することが可能です。
アドベントカレンダー2日目以降の記事ではサンプルの中身や実装のポイント等について書いていきますのでよろしくお願いします!