本記事について
この記事は CoreBluetoothForUnity Advent Calendar 2023 の11日目の記事です。
CoreBluetoothForUnity を開発する上でこの情報を先に知っておけば...!という参考資料がいくつかありました。それについてまとめます。
公式ドキュメント
サンプルはほぼありませんが、設定周りは見る必要があります。
Apple ARKit XR Plugin
これが一番早く知りたかった情報です。実質公式サンプル
- Package Manager で Unity Registry を選択
- Apple でフィルターをかける
- ARKit ARKit XR Plugin が表示される
これをインストール後
Packages > Apple ARKit XR Plugin > Runtime > Frameworks に NativePlugin と連携する部分のコードがあります。
また、Runtime > iOS 以下に NativePlugin が配置されています。
Objective-C で書かれています。
拡張子 .m
のファイルは中身も読めます。
中身を読んでもわからない部分は多々あります。
- どこで Dispose しているのか
- どういう経緯・理由で現在の設計になっているのか
- なぜこれ単体でライブラリを切り出していないのか
しかし、どのクラス、struct がどのような関数、役割を持つのか等わかる部分だけでも非常に参考になります。
GitHub にコードが落ちてますが、これは LICENSE 的に大丈夫か怪しいためリンクは貼らないでおきます。
Xamarin の API ドキュメント
こちらも関数名や、実装とても参考になりました。これも宝の山です。
ソースコードも見れます。
こちらも Objective-C で書かれています。
ble-plugin-unity
toio の BLE Plugin です。
toio ではどうやってるんだろう?っていうのが確認できました。
Microsoft の関連のドキュメント
公式大事。
Keijiro さんの MEMO
Swift のポインタ周り
このあたりはいまだにわからない部分も多いです。(OpaquePointer と UnsafePointer どちらを使うべきかとか)
ただ、資料は多いし Swift のポインタ周りの実装はとても扱いやすく感じました。
neuecc さんの csbindgen の記事
コールバックのやり方とか書いてあります。
csbindgen 自体は使い方と、使ってどのくらい良くなるのかがよくわからなかったため使用していません。(NativeMethods のコード自動生成したいため、使いたい気持ちはあります。)
おわりに
本記事では CoreBluetoothForUnity の開発にあたって参考になった資料を紹介しました。ここに載せた資料意外にも Unity の NativePlugin 周りの知見が書かれた多くの Qiita 記事等を参考にしました。これらの資料のおかげで CoreBluetoothForUnity は開発できております。ありがとうございます!