こんにちは、Unityエンジニアのオオバです。
Unityは次のようなマルチプラットフォーム書き出しに対応しています。 iOS、Android、WebPlayer、WebGL、PS3、PS4、Xbox 360 などです。
Unityがマルチプラットフォームに対応していますが、実は 複数のプラットフォームに対して同時にアプリを書き出すことはできません。
下の図のように書き出したいプラットフォームを選択して、 Switch Platform(スイッチプラットフォーム) する必要があるのです。
「なんだ、簡単じゃん」 と思うかもしれません。しかしSwitch PlatormはUnityプロジェクト内のファイル数によって、 ものすごく 時間がかかってしまう処理です。30分以上作業ができなくなることも普通にあります。
もし、あなたがスマホゲーム開発をしているのであれば、iOSとAndroidにはどちらもリリースしたいですよね。つまりiOSとAndroidのプラットフォームを切り替える必要があるということです。
Switch Platformはゲーム開発上、時間の無駄。
そこで、本記事では長時間作業を止めてしまう Switch Platformの時短テクニック を解説します。この記事を通してゲーム作りの時間を確保してみませんか。
👉DOTweenの教科書を読んでUnityアニメーションをプログラミングしてみよう!
Switch Platformとは?
時短テクニックを紹介する前に、そもそもSwitch Platformとは何か解説します。Switch Platformとは開発プラットフォームの切り替え作業のことです。iOSからAndroid、AndroidからPC向けと、ビルド先のプラットフォームを切り替えられます。
Switch Platformすることでプラットフォーム特有の機能にアクセスできるようになるのです。
またSwitch Platformのやり方はとても簡単です。
メニュー File > Build Profiles
から Build Profilesウィンドウ を表示します。
左メニューに並ぶプラットフォームリストから切り替え先を選択し Switch Platformボタン を押すと切り替え作業は開始します。
Switch Platformできない場合の対処法
プラットフォームを変更したいのにSwitch Platformボタンが押せないときがあります。 原因はモジュールの未インストール です。
上図はWebGLにプラットフォームを変更したいけどSwitch Platformボタンが表示されない状況です。
原因はWebGLビルドサポートモジュールがインストールされていないためです。
ビルドサポートはUnity Hubからインストール
各プラットフォーム向けのビルドサポートモジュールをインストールすることでSwitch Platformすることが可能です。
ビルドサポートモジュールはUnity Hubからインストールします。
モジュールを追加したいUnityバージョンの 歯車ボタン をクリックして 「モジュールを加える」ボタン をクリックしてください。
「WebGL Build Support」にチェックを入れてインストール。するとSwitch Platformできるようになります。
Unityを起動したままビルドサポートモジュールをインストールした場合は、一度Unityエディタを再起動すると反映されます。もしうまく行かないという方は一度Unityエディタを再起動してみましょう。
Unityにはさまざまなモジュールが用意されています。次の記事で詳しく解説していますのでぜひ読んでみてください。

【Unity】モジュールの追加方法
Unityの中にはモジュール単位で分けられた機能があります。iOS向け、Android向けゲームを作りたい場合はビルドサポートモジュールが必要です。本記事では初...
Unity2020からSwitch Platformが改善
実はUnity2020からSwitch Platformのスピードが改善しています。というのもアセット管理システムがUnityの内部でバージョンアップしたためです。
Unity2019まではAssetDatabase V1が採用されていましたが、2020からはAssetDatabase V2 になりました。
V2になったことでSwitch Platformによる変換処理がキャッシュされるため、V1の頃のようにリセットしません。つまり2回目以降のSwitch PlatformはV1と比べると圧倒的に早くなりました。
とはいえ、まだまだ時間のかかる分野であるため、本記事では改善の糸口をお伝えしていきます。
Switch Platformの時間がかかる原因
Switch Platformが何に時間がかかっているのか知っておきましょう。結論 テクスチャ(画像) の圧縮作業です。例えば、UnityプロジェクトにPNGファイルを追加したとしてもPNGファイルとして使われるわけではありません。
iOSであれば、PVRTCやASTC、Androidの場合はETC、ETC2、ASTCという圧縮テクスチャフォーマットに変換されます。PNGより使用するメモリサイズが大幅に小さくなるのです。
Switch Platformによってテクスチャがどのように変換、圧縮されるのか見ていきましょう。サンプルとして1024☓1024pxサイズのテクスチャをiOSは PVRTC
、Androidは ETC
に設定してみます。
iOS | Android |
---|---|
![]() | ![]() |
PVRTCに設定 | ETCに設定 |
この時Unityのビルド設定がiOSだった場合、 png画像はPVRTCに変換する処理 が実行されます。
Unityプロジェクト内のすべてのテクスチャの変換が終わるまでUnityは操作できません。
再びSwitch Platformすると再度変換処理が走る
iOSからAndroidにSwitch Platformしてみます。すると png画像がETCに変換する処理 が実行されるのです。
つまり Switch Platformを実行するたびに圧縮テクスチャへの変換と圧縮作業時間に待たされてしまう ということです。
テクスチャのクオリティ設定による待ち時間問題
テクスチャのクオリティ設定は Compressor Quality で決めます。
クオリティは「Fast」「Normal」「Best」から選びます。大抵の場合「Best(最高にきれいな品質)」を選択します。
シンプルにゲームの質を上げることができるため、 よっぽどのことがない限りはBest以外を選択することはありません。
しかし、 クオリティを上げるということは圧縮テクスチャの圧縮時間も長くなります。 Bestにすると思った以上に待ち時間が増えるので注意です。
データが変わりやすい開発序盤はNormalにして、データが固定化する中盤以降Bestにするといった運用も考慮に入れておいた方が良いかもしれません。
Switch Platformを時短する3つの方法
スマホアプリを開発している最中にiOSで書きだしたあと、Androidでもテストしたいということはよくあります。ただ書き出すためだけに30分待つのはアホらしい。
ということで、それらを解決する方法を3つ紹介します。
①Switch Platformする数だけUnityプロジェクトを作る
②Unity Acceleratorを使う
③Asset Import Overridesを使う
①Switch Platformする数だけUnityプロジェクトを作る
最初に紹介するテクニックは 「Switch Platformする数だけUnityプロジェクトを作る」 です。
最初にhoge-iosというiOS向けUnityプロジェクトを作っておきます。Android用を作りたくなったとき、hoge-iosをまるごとコピー するのです。
↓下のようなディレクトリ構成でiOSとAndroidのプロジェクトを分けておきます。
workspace/Unity/hoge-ios
・・・iOS用Unityプロジェクトworkspace/Unity/hoge-android
・・・Android用Unityプロジェクト
Unityプロジェクト内のファイルはgitを使って同期させます。オオバはGitHubを使うことが多いです。
Unity Hubを使えばUnityエディタの多重起動も可能なので、iOS、Androidどちらも起動しながら作業ということもできます。ただし、Unityエディタ自体がパワーを必要とするため、ハイスペックなパソコンが求められるため注意が必要です。
👉 【Unity入門】Unity Hubのインストールからセットアップまで徹底解説
デメリットは切り替える数だけプロジェクトが必要なのでパソコンのストレージを圧迫することです。容量に余裕のあるマシンなら全く問題になりません。
②Unity Acceleratorを使う
次に紹介するのは Unity Acceleratorを使う案 です。
Unity Acceleratorを使うことでアセットインポートキャッシュをチーム間で共有できます。アセットインポート後のデータをチーム間で共有することで各メンバーで同じインポート作業が発生しなくなりトータルチーム内の開発時間を節約できるのです。
もちろん初回のインポートには時間がかかってしまうのですが、2回目以降はキャッシュがサーバーからダウンロードされ高速化されるため開発者はUnity Acceleratorの初期設定をするだけで、その後は特に気にせず高速化の恩恵を受けられるのです。
Unity AcceleratorはUnity Cloudの一部で、Unity Cloud管理画面から利用することができます。
Unity Acceleratorの設定方法
Unity Acceleratorのの設定方法は簡単です。
チーム内で使用する同じネットワーク上にホストPCを用意し、Unity Acceleratorアプリをインストールして初期設定。
開発者はUnityエディタUnity Acceleratorの設定を行います。
メニューUnity -> Preferences -> Asset Pipeline
からUnity Acceleratorの Default Mode を「Enabled」へ変更。Default IP addressにUnity AcceleratorのIPアドレスを指定します。
最後に「Check Connection」ボタンをクリックすれば完了です。
詳しい導入方法は公式ドキュメントを参考にしてみてください。

③Asset Import Overridesを使う
3つ目の方法はUnity2021から登場した 「Asset Import Overrides」 の使用です。Asset Import Overridesとは アセットのインポート設定を上書きできる機能 です。
前述のSwitch Platformで時間がかかるもの1つはテクスチャのインポートです。Asset Import Overridesを使うと、テクスチャのを非圧縮にできます。つまりテクスチャのインポート・圧縮時間が限りなくゼロになり Switch Platformの時間の大幅に短縮できる のです。
詳しくはこちらの記事で解説していますので、ぜひ読んでみてください。
Switch Platformを時短するテクニックまとめ
Switch Platformを時短する3つの方法を紹介してきました。まとめるとこんな感じです。
①Switch Platformの数だけUnityプロジェクトを作り時短
②Unity Acceleratorで時短
③Asset Import Overridesで時短
ゲーム開発中はアセットはどんどん増えていきます。ファイルが増えればSwitch Platformの時間は長くなるため、そうなる前に対策しておきたいですね。
今回紹介した3つのテクニックの中でのおすすめ順は 「③→②→①」 です。
基本的にどれも無料で試すことが可能です。Unity開発にとって Swich Platformは鬼門 です。事前の対策をして開発時間を無駄にしないようにしておきたいですね。
この記事があなたのゲーム開発に少しでもお役に立てたら嬉しいです。

筆者のXをフォローしよう
- Unity6000.0.32f1