3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

CoreBluetoothForUnityAdvent Calendar 2023

Day 1

CoreBluetoothForUnity のご紹介

Last updated at Posted at 2023-11-30

本記事について

この記事は 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) を使う機能を提供します。

本パッケージで何ができるのか

  • Mac, iPhone 間でシンプルなデータを手軽に送受信
  • M5Stack などの BLE デバイスとの通信

UMP でダウンロード可能なサンプルとして、以下の2つを用意しています。
iOS で確認する場合はビルドが必要ですが、UnityEditor であればサンプルをダウンロードしてサンプルシーンを開くだけで通信を試すことができます。

Light Control

Central Peripheral
lightcontrol_central output

Button Information

Central Peripheral
mov_button_information button_information_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

スクリーンショット 2023-11-08 23.49.06.png

Package Manager で My Registries を選択することでパッケージが表示されます。

スクリーンショット 2023-11-09 0.00.02.png

サンプルのインポート

Package Manager に Samples のタブが表示されており、そこからインポートできます。
本記事では 01_LightControl を使用します。

スクリーンショット_2023-11-09_21_35_57.png

インポートすると以下のように配置されます。

project.png

SampleLightControl_CentralScene を開いて、色を選択できる画面であること
SampleLightControl_PeripheralScene を開いてLightがある3D空間が表示されていれば成功です。

サンプルのビルド

サンプルを使って UnityEditor (OSX) と iPhone 間で BLE 通信を試します。

以下の手順で進めます。

  1. ビルドするシーンを指定
  2. Build PostProcess を追加して、Bluetooth を有効にする
  3. Build

1. ビルドするシーンを指定

どちらでも動きますが、本記事では
色を指定する側 (Central) を iPhone, Light がある側 (Peripheral) を UnityEditor (OSX) で動かすことにします。

上部メニューの File > Build Settings を選択します。

まずは iOS にスイッチプラットフォーム。
そして、SampleLightControl_CentralScene を追加します。

build_settings.png

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

Core Bluetooth Overview

Unity でビルドする場合は、Build PostProcess で Info.plist を書き換えることができます。

そして、それを行うためのスクリプトはサンプルに用意してあります。
Package Manager を開き、Samples の BuildPostprocessor をインポートします。

postprocess.png

3. Build

あとは通常の iOS ビルドと同じです。

初めてビルドする場合は以下のように許可を求められます。

ble.PNG

これで準備完了です。

Mac と iPhone それぞれ Bluetooth を ON にしたうえで、iPhone はアプリを起動、 UnityEditor では SampleLightControl_PeripheralScene を再生してください。

画面右上に Ready と表示されたら、バーを動かすことで Light の色が変わるはずです。

central.PNG

おわりに

本記事では CoreBluetoothForUnity の特徴、Light Control サンプルの使い方を紹介しました。
サンプルさえ動かすことができれば、あとは中身の実装を学ぶことで応用することが可能です。
アドベントカレンダー2日目以降の記事ではサンプルの中身や実装のポイント等について書いていきますのでよろしくお願いします!

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?