Unity Editor Preferences の設定をC#から変更する
Unity Cloud Build に限った事では無いのですが、 自動ビルド環境を構築する際、Unity Editorの Edit > Preferences の設定をC# scriptから変更したい場合があると思います。
普段触らないので毎回忘れるのでメモ。
UnityEditor.EditorPrefs で設定できる。
結論としては、UnityEditor.EditorPrefs で設定できます。
ただ、どんな設定項目(key)があるのかの一覧を見つけることができなかったので、 手元の設定を開いてキーと型を見つけ出す必要があります。
上記、ドキュメントにもあるのですが、
- Windowsの場合はレジストリ (Win + R > regedit)
HKCU\Software\Unity Technologies\UnityEditor 5.x
- mac の場合は、
~/Library/Preferences/com.unity3d.UnityEditor5.x.plist
を開いて見つけ出さないといけないようです。
Gradleの設定を切り替える
具体例として、Android ビルド時に利用するgradleの切り替えを行います。
デフォルト状態では、インストール時の設定にもよりますが、Unity組み込みのgradleが利用されます。
これを変更するには、GUI上では Edit > Preferences > External toolsを開いて
- Gradle Installed with Unity recommended のチェックを外す
- Gradleのパスを
browse
を押して任意のパスに変更する
という手順を踏む必要があるのですが、これをスクリプトでやったのが以下のコードとなります。
gradle-5.6.4 が、Application.dataPath/../../gradle-5.6.4
に配置されている想定です。
public static class BuildAndroid { private static void PreBuild() { var defaultGradle = EditorPrefs.GetString("GradlePath", ""); var newGradle = Path.Combine( Application.dataPath, "..", "..", "gradle-5.6.4"); EditorPrefs.SetBool("GradleUseEmbedded", false); EditorPrefs.SetString("GradlePath", newGradle); Debug.Log($"ChangeGradlePath: {defaultGradle} to {newGradle}"); } }
Unity Cloud Buildでも、gitリポジトリ内にgradleライブラリを配置して、
Config > Advanced Options > Pre-Export Method Name に上記 BuildAndroid.PreBuild
を設定してやれば動作する事は確認できました。
(ARCore関連で必要に迫られることがあったのです)
EditorPrefs の設定は全プロジェクト共通なので注意
- EditorPrefs の設定は、Editor側の設定なので、同一バージョンのエディターを利用している場合は、全UnityProjectで共通の設定として扱われます。
- 特定のProjectのみgradleのバージョンを切り替える場合は、ビルド完了後に、gradleのバージョンを元に戻す設定を入れておいた方が良いかもしれません。