Blog ブログ

Apple Watch開発 -Unity連携編-

皆様こんにちは。

今回のブログを担当させて頂きます、
エンジニアの姫野と申します。

内容は前回に引き続きApple Watchです。
今回はUnityで作成されたiPhoneアプリとの連携を行ってみましょう。

目標はApple Watchからの入力をUnity側で受け取って反映できる、というところまでです。
それではいってみましょう!

事前準備

  1. 前回ブログで準備したもの(Xcode, 実機)
  2. Unity:私の環境では5.0.1を使用しております。(Unity5以上を推奨します)

ビルド手順

  1. Unityでビルドし、Xcodeプロジェクト作成
    ビルドできるようにするまでの手順で、Unityでの特別な作業はありません。
    Switch PlatformでiOSを選択し、ビルドしておきましょう。
  2. 成功すれば、ビルド先は以下のような状態になっているかと思いますので、
    この状態になっている前提で話を進めていきます。

  3. Xcodeを開き、Watch AppをTargetに加える
    ここは前回のブログの内容で説明しているので、まだご覧になっていない場合はこちらからどうぞ。
  4. Build Settings及びinfo.plistを編集する
    追加された、WatchKit ExtensionとWatchKit AppのBuild Settingsとinfo.plistを編集します。

    ▪︎WatchKit App

    Build Settings
    Deployment → iOS Deployment TargetをiOS8.2へ変更
    info.plist
    Bundle versions string, short及びBundle versionを
    UnityのBundleバージョンと同値にする

    ▪︎WatchKit Extension

    Build Settings
    Build Options → Embedded Content Contains Swift CodeをYesに変更
    ※Swiftコードを使用しない場合はこの設定は必要ありません

    Build Settings
    Architectures → ArchitecturesをStandard architecturesに変更
    info.plist
    Bundle versions string, short及びBundle versionを
    UnityのBundleバージョンと同値にする

  5. 実行
    ここまで設定すれば、ひとまず実行することができるかと思います。
    実行するスキームをWatchKit Appに変更してRunを行っておきましょう。

Unityとの連携

ここからが本番です。
UnityとApple Watchとの連携を実装してみましょう。

  1. InterfaceController.swiftにApple Watch側のボタンが押された時のイベント処理を記述する
  2. デフォルトで生成される内容から赤枠の部分を追加しましょう。
  3. WatchKit Appのstoryboardを編集し、画面にボタンを追加する
  4. Buttonパーツを赤枠内にドラッグ&ドロップすることで配置できます。
  5. 配置したボタンにアクションを追加する
    配置したボタンを右クリックするとメニューが出てくるので、
    Sent Actionsの右側にある◯から黄色いマークまでドラッグすることで
    ボタンにアクションを追加することができます。
    onClickActionを選択することで、アクション追加は完了です。
  6. UnityAppControllerをApple Watchからの通知に対応する
    上記メソッド(handleWatchKitExtensionRequest)を
    UnityAppControllerのメンバに追加しましょう。

    このメソッドは、WKInterfaceController.openParentApplicationの
    コールバックとなっています。
    このメソッドの中でUnitySendMessageを用いることでUnity側に通知を行います。
    この場合、ヒエラルキー上にある、WatchBridgeという名前のGameObjectが持つ
    notifyというメソッドが呼び出されます。
    また、引数にはstring型でonClickActionという文字列が格納されています。
  7. 実行
    あとはRunするだけです!
    Unity側にhandleWatchKitExtensionRequestから呼び出されるメソッドの定義がされていれば、Apple Watchからのボタン入力を受け取れるアプリの完成です。

最後に

いかがでしたでしょうか。
これでUnityとApple Watchと連動させたゲームが作成できますね。
まだまだStoreにはApple Watchアプリの数が少なく、特にゲームは更に少ないという状況です。
この記事を、Apple Watchゲームアプリの制作に役立てて頂ければ、幸いです。

採用情報

クラウドクリエイティブスタジオではプログラマを募集しております。
ぜひ、面白いものを一緒に作っていきましょう!