渋谷ほととぎす通信

完全趣味でやってるUnityメモ。説明できないところを説明できるようにするための個人ブログ。昨日の自分より少しでも大きくなれるように。。。 ※所属団体とは一切関係がありません

UnityとObjective-Cのやりとり


f:id:esakun:20150730215258g:plain

UnityとSwiftのやり取りを進めていたのですが、なかなかうまく行かなかったので、一旦初心に帰り、Objective-CとUnityのやり取りを確認しようと思います。

とても簡単なUnityのネイティブプラグインの作り方 - 渋谷ほととぎす通信
この辺りの記事を思い出しながら始めます。

qiita.com この記事が非常にコンパクトにまとめられててありがたい。

ディレクトリ構成

Assets/
    Plugins/
        iOS/
            -SampleObjC.mm
            -SamplePlugin.cs
    -Test.cs

拡張子を.mから.mmに変更する理由はC++を内包できるためです

このようなファイル構成です。
以下上記3ファイルのサンプルソースコードです。

extern "C"について

d.hatena.ne.jp

特に壁にぶつからずスムーズに実装できました。


ただSampleObjC.mmを書く時にテキストエディタやMonoDevelopで記述するとコード補完が効きません。Xcodeで開いてもファイル単品をオープンするだけではコード補完が効かず、もっと複雑な処理を書く場合は結構厳しい気がしました。

そこで、Xcodeプロジェクトをネイティブプラグインのフォルダに作ってコード補完が効く状態にします。

f:id:esakun:20170801102931p:plain

XcodeのFile > New > ProjectからCocoa Touch Framworkを選択。

f:id:esakun:20170801103031p:plain

適当なProductNameを付けて、Languageを Objective-Cを選択します。

f:id:esakun:20170801103225p:plain

File > New > FileからObjective-C Fileを選択。 SampleObjCと命名。以下のディレクトリに入れます。

f:id:esakun:20170801103314p:plain

Xcode上でSampleObjC.mmにリネームします。

あとはコード補完の利くSampleObjC.mmをいじるだけです。以上。

環境

  • Unity2017.1.0f3
  • Xcode 8.3.3
  • macOS 10.12.4