BluetoothLEを使用してiOS/Android間でアドホック通信を行うためのUnityプラグインです。
スマートフォンに搭載されているBluetoothLEを使用して通信を行うので、 WiFiやインターネットが利用できない環境でもアドホック通信を行うことができます。
通信やプレイヤーの管理等はプラグイン側で行われるため、本当に簡単なコードを書くだけで使用できます。 シンプルなC#クラスとして実装されており、プラットフォームの差異を気にする必要はありません。
開発および動作環境 | バージョン | 補足 |
---|---|---|
Unity | 2018.2 以降 | Javaソースコードを.jar化すれば以前のバージョンでも動作します |
.NET Framework | 3.5 および 4.X | どちらでも動作します |
iOS | 9 以降 | |
Android | 5 以降 | |
Windows | 10 以降 | Unityエディタ上のみ |
MacOS | - | 未対応 |
Bluetoothを使用するため、PlayerSettings内のLocationUsageDescriptionの設定が必須です。
またinfo.plistおよびXCodeプロジェクトの設定が必要ですが、デフォルトでは Assets/Plugins/Editor/BleSockXcodePostProcessBuild.cs により自動設定されますので 必要に応じ編集してください。
ランタイムで必要な権限の設定などは Assets/Plugins/Android/AndroidManifest.xml 内に記述されていますので、必要に応じ編集してください。
なおAndroid 6以降では別途、位置情報の取得権限が必要です。 これはデフォルトではUnityにより自動で要求されるため、明示的に無効化しない限りは対応する必要はありません。
Android環境においては同一端末上で、同時に複数のホスト(ペリフェラル)を起動した場合の動作は保証されません。 (ペリフェラルを起動する際に古いペリフェラルのサービスも更新されてしまい、通信が途絶してしまうため)
Unityエディタの動作環境がWindows10でかつBluetoothアダプタが使用可能な場合 エディタ上でも通信テストが行えます。
その際Unityプロジェクトの.NET Frameworkバージョンを4.Xに変更する必要があります。
安定性の問題により、現状ホスト(ペリフェラル)には対応していません。 またゲスト(セントラル)でもスキャン時にデバイス名を取得できないため、代わりにIDが取得されます。
BluetoothLEはそもそもの帯域が狭いため(理論上は~1Mbpsだけど実測はもっと下) 大きなメッセージや大量のメッセージを一度に送受信することはできません。
コンパクトで最低限のメッセージ通信で完結するようにアプリケーションを設計する必要があります。
現状Android端末での動作検証が十分ではありません。
動作条件を満たしていたとしても、すべての機種でプラグインが動作するわけではなく 古い端末ではホスト(ペリフェラル)に対応していない場合があったり、 どうしても接続や通信が不安定となる端末があります。
動作確認ができた、もしくは動作しなかった端末をレポートいただけますと助かります。