🐸

UnityCloudBuildで環境ごとにビルドする

2021/07/20に公開

環境ごとに設定を変更してビルドする手法をまとめました。

  1. 作成したプログラム
  2. Scriptによる環境の指定
  3. UnityCloudBuildでのビルド

作成したプログラム

簡易的に、Inspectorで指定した環境の設定を読み込み動作するプロジェクトを作成しました。

InspectorでProductを指定して実行した場合は以下のようになります。

手動でビルドする場合は、開発の場合はInspectorでDEVELOPを、本番の場合はPRODUCTを指定してからビルドする、といった作業になります。

Scriptによる環境の指定

手動でビルドする場合はいいですが自動ビルドの場合わざわざInspectorでDEVELOP、PRODUCTそれぞれを設定したものを管理するわけにもいきません。
今回はUnityCloudBuildのPre- and post-export methodsを利用します。ビルドの前に指定したクラスのメソッドを実行するというものです。

Editorフォルダに以下のようなクラスを用意しました。(Editorフォルダに配置しないとUnityCloudBuildで動作しません。)

using UnityEngine;
using UnityEditor;
using UnityEditor.SceneManagement;

public class CloudBuildHelper : MonoBehaviour
{
    [MenuItem("SetEnvironment/ToDevelop")] // 動作確認用
    public static void SetEnvironmentToDevelop()
    {
        // 開発環境の設定をする
        SetEnvironment(EnvironmentType.DEVELOP);
    }

    [MenuItem("SetEnvironment/ToProduct")] // 動作確認用
    public static void SetEnvironmentToProduct()
    {
        // 本番環境の設定をする
        SetEnvironment(EnvironmentType.PRODUCT);
    }


    private static void SetEnvironment(EnvironmentType targetEnvironment)
    {
        // シーンを開く
        EditorSceneManager.OpenScene("Assets/Scenes/SampleScene.unity");
	// EnvironmentConfigコンポーネントの取得
        EnvironmentConfig environmentConfig = GameObject.Find("EnvironmentManager").GetComponent<EnvironmentConfig>();

        environmentConfig.EnvironmentType = targetEnvironment;

        // 設定を保存
        Undo.RecordObject(environmentConfig, "Update");
        EditorUtility.SetDirty(environmentConfig);
        EditorSceneManager.SaveOpenScenes();
    }
}

UnityCloudBuildでのビルド

UnityCloudBuildで開発用と本番用、2つのビルドターゲットを用意します。
開発用のビルドではSetEnvironmentToDevelopメソッドを
本番用のビルドではSetEnvironmentToProductメソッドを
エクスポート前メソッドに設定します。

ビルドした結果です。

開発用のビルド

本番用のビルド

Discussion