Unityメモ – Cloud BuildでGoogleVR版とGearVR版両方ビルドする様にしてみる

Posted: 2016年8月30日 カテゴリー: ゲームジャム, プログラミングメモ, Unity, Unity メモ, VR
タグ:, , , , , , ,

前回に引き続き、Mobile VR Jamでこれやってたよネタです。

今回はUnity Cloud Buildでアプリのアンドロイド版と、GearVR版、二つのビルド設定を作る方法を紹介します。

Unity Cloud Buildが何だとか、どんだけ素晴らしいかとか、基本的な使い方とかについてはまずUnityの伊藤さんが公開している素晴らしいスライドを見てみてください(本当にありがとうございます! m_ _m)

 

ビルド自動化最高!!!
・・・はい、では続きです。

スライドを見たり、GearVR開発やっていたら説明が必要ないかもしれませんが、何故GearVR用設定を作るかと言うと、まずローカル上で設定切り替えてビルドするのは面倒だからです。さらに、作業をリポジトリに上げる度にGoogleVR版とGearVR版を両方自動で用意してくれるのはやっぱり楽ですし、自分だけでなく他のメンバーも定期的に更新番を拾えるので役に立ちます。

 

前置きが長くなったので、やりかたです。Cloud Buildの基本的使い方は伊藤さんのスライドを見てください。一先ず通常のアンドロイドアプリをビルド出来る状態にまで、持っていってください(投げやり)。

pic10

こんな感じで、特別な設定は行っていないビルド設定を作ります。それで次にもう一つ今度はGearVR用のビルド設定を作ります。まず、Cloud Build内の”Config”タブを押して、その中で”Setup New Target”ボタンを押してください。

pic11

プラットフォームでアンドロイドを選択してください。

pic12先ほど作ったアンドロイド用の設定と同じ物を入れてください。Unityのバージョン設定は画像に従わなくて良いので、自分のプロジェクトに有った物を選択してください。

pic13それで設定していくと、新しいビルド設定が作られ、多分ビルドが走ります。ここまでだと最初に用意して貰ったアンドロイド版と同じになります。Cloud Build内でまたConfigのタブに戻ると先ほど追加した設定がありますので、確認してください。

pic14新しく作った設定の方の”Show Advanced Options”と書いてある所の[+]ボタンを押してください。そうすると詳細設定が見られますので、今度は”Edit Advanced Options”のボタンを押して、設定画面へ移動してください。

pic15さて、前置きが長くなりましたが、ここからが本番です。詳細設定ではこの様な画面が出てきます

pic16Cloud Buildでは一部のプロジェクト設定を指定出来ますが、GearVRで使用するVirtual Reality Supportedは設定出来ません。なので、それをどう設定するかと言いますと、この詳細画面内に”Pre-Export Method Name”と言う項目があります。この項目はUnityがビルドを開始するにスクリプトの処理を指定して呼ぶ事が出来ます。ですので、ここでスクリプトからプロジェクトのVirtual Reality Supportedのbool値を変える事でGearVR向けのビルドを実現出来ます。

 

Pre-Export Method Nameで指定する処理はpublic staticなメソッドで、記入するのは[クラス名.メソッド名]になります。では、まずはビルド時に呼ぶ処理を作ってみましょう。

 

Unityのプロジェクト内に、”Editor”と言うフォルダを無ければ作成し、その中にスクリプトを作成してください。何故Editorフォルダ内かというと、PlayerSettingsをスクリプトから参照するには、UnityEditorを参照する必要があり、これはEditorフォルダ内のスクリプトでないと参照出来ないからです。

pic21スクリプトを作りましたらやる事自体は簡単で、Virtual Reality Supportedをtrueにするだけです。

<pre>using UnityEngine;
using UnityEditor;

public static class BuildSetuper
{
    public static void Setup()
    {
        PlayerSettings.virtualRealitySupported = true;
    }
}

これだけでも行けます。ただ、個人的な趣味ですが、アプリ名がアンドロイド版と同じだとアンドロイド端末にインストールする際、後に入れたapkで元々のが上書きされ両方のapkを同時に展開する事が出来ない為、開発用に名前を変える処理も追加しました。

<pre>using UnityEngine;
using UnityEditor;

public static class BuildSetuper
{
    // GearVR版のアプリの名前に付け足す文字
    public const string GEAR_VR_TEXT = "_Gear";

    public static void Setup()
    {
        PlayerSettings.productName += GEAR_VR_TEXT;
        PlayerSettings.virtualRealitySupported = true;
    }
}

これで準備完了です。ではCloud Buildの詳細設定に戻ります。

戻った後はPre-Export Method Nameに先ほど追加したクラス名と、メソッド名を記入します。

pic17これで完了です。後は保存して、ビルドが動くかを試してみてください。

ここからはオマケですが、詳細設定画面ではdefineを定義する事が出来ます。なので、GearVR版にはGearVR用のdefineを足す事が出来ます。足す為には、”Script Define Symbols”の項目にdefine名を書き、[+Add]のボタンを押してください。

pic19押すと、入力する所の上に、定義済みのdefineが表示されます

pic20これでスクリプト内でも#if GEAR_VR 等で処理を変える事が出来ます:

using UnityEngine;
using UnityEditor;

public static class BuildSetuper
{
    // GearVR版のアプリの名前に付け足す文字
    public const string GEAR_VR_TEXT = "_Gear";

    public static void Setup()
    {
#if GEAR_VR
        // GearVRの場合の処理
        PlayerSettings.productName += GEAR_VR_TEXT;
        PlayerSettings.virtualRealitySupported = true;
#else
        // ... 他のプラットフォームの場合
#endif
    }
}

これでアンドロイド版で特定な事をしたかったり、また別のプラットフォームがあったり、もしくはリリース版だっりで処理を変えたい時に使えます。ちなみに、自分は先にこれをやった後に「あれ、今回いらないんじゃね?」ってなったので、取りあえず入れたままにして作業してました。

 

今回は以上になります。

 

この系ネタは後1回で当分気が向くまでお休みの予定です。

・・・作業しなければ


//

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中