0
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 11

【Unity】Swift の NativePlugin を作成するための参考資料

Last updated at Posted at 2023-12-10

本記事について

この記事は CoreBluetoothForUnity Advent Calendar 2023 の11日目の記事です。

CoreBluetoothForUnity を開発する上でこの情報を先に知っておけば...!という参考資料がいくつかありました。それについてまとめます。

公式ドキュメント

サンプルはほぼありませんが、設定周りは見る必要があります。

Apple ARKit XR Plugin

これが一番早く知りたかった情報です。実質公式サンプル

pm_arkit.png

  1. Package Manager で Unity Registry を選択
  2. Apple でフィルターをかける
  3. ARKit ARKit XR Plugin が表示される

これをインストール後

Packages > Apple ARKit XR Plugin > Runtime > Frameworks に NativePlugin と連携する部分のコードがあります。

framworks.png

また、Runtime > iOS 以下に NativePlugin が配置されています。
Objective-C で書かれています。

スクリーンショット 2023-11-16 22.30.17.png

拡張子 .m のファイルは中身も読めます。

中身を読んでもわからない部分は多々あります。

  • どこで Dispose しているのか
  • どういう経緯・理由で現在の設計になっているのか
  • なぜこれ単体でライブラリを切り出していないのか

しかし、どのクラス、struct がどのような関数、役割を持つのか等わかる部分だけでも非常に参考になります。

GitHub にコードが落ちてますが、これは LICENSE 的に大丈夫か怪しいためリンクは貼らないでおきます。

Xamarin の API ドキュメント

こちらも関数名や、実装とても参考になりました。これも宝の山です。

CoreBluetooth
Foundation

ソースコードも見れます。

こちらも Objective-C で書かれています。

ble-plugin-unity

toio の BLE Plugin です。
toio ではどうやってるんだろう?っていうのが確認できました。

Microsoft の関連のドキュメント

公式大事。

Blittable 型と非 Blittable 型

ネイティブ相互運用性のベスト プラクティス

SafeHandle

Keijiro さんの MEMO

Swift のポインタ周り

このあたりはいまだにわからない部分も多いです。(OpaquePointer と UnsafePointer どちらを使うべきかとか)

ただ、資料は多いし Swift のポインタ周りの実装はとても扱いやすく感じました。

neuecc さんの csbindgen の記事

コールバックのやり方とか書いてあります。
csbindgen 自体は使い方と、使ってどのくらい良くなるのかがよくわからなかったため使用していません。(NativeMethods のコード自動生成したいため、使いたい気持ちはあります。)

おわりに

本記事では CoreBluetoothForUnity の開発にあたって参考になった資料を紹介しました。ここに載せた資料意外にも Unity の NativePlugin 周りの知見が書かれた多くの Qiita 記事等を参考にしました。これらの資料のおかげで CoreBluetoothForUnity は開発できております。ありがとうございます!

0
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
0
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?