渋谷ほととぎす通信

エンジニア社長によるUnityとAIのブログ & エンジニアの生存戦略

【Unity】重いSwitch Platfomとは?3つの時短テクニックと共に解説

【Unity】重いSwitch Platfomとは?3つの時短テクニックと共に解説

こんにちは、Unityエンジニアのオオバです。

お悩みさん
お悩みさん
  • Switch Platformの方法を知りたい
  • Switch Platformが重くて我慢できない
  • Switch Platformを少しでも時短できる方法はない?
  • オオバ
    オオバ
    本記事ではこれらの悩みを解決します。

    Unityは次のようなマルチプラットフォーム書き出しに対応しています。 iOS、Android、WebPlayer、WebGL、PS3、PS4、Xbox 360 などです。

    Unityがマルチプラットフォームに対応していますが、実は 複数のプラットフォームに対して同時にアプリを書き出すことはできません。

    下の図のように書き出したいプラットフォームを選択して、 Switch Platform(スイッチプラットフォーム) する必要があるのです。
    【Unity】重いSwitch Platfomとは?3つの時短テクニックと共に解説_0

    「なんだ、簡単じゃん」 と思うかもしれません。しかし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のやり方はとても簡単です。

    【Unity】重いSwitch Platfomとは?3つの時短テクニックと共に解説_1
    メニュー File > Build Profiles から Build Profilesウィンドウ を表示します。

    【Unity】重いSwitch Platfomとは?3つの時短テクニックと共に解説_2
    左メニューに並ぶプラットフォームリストから切り替え先を選択し Switch Platformボタン を押すと切り替え作業は開始します。

    ※Switch Platformはプロジェクトの状況によって時間がかかることがあります

    Switch Platformできない場合の対処法

    プラットフォームを変更したいのにSwitch Platformボタンが押せないときがあります。 原因はモジュールの未インストール です。

    【Unity】重いSwitch Platfomとは?3つの時短テクニックと共に解説_3
    上図はWebGLにプラットフォームを変更したいけどSwitch Platformボタンが表示されない状況です。

    原因はWebGLビルドサポートモジュールがインストールされていないためです。

    ビルドサポートはUnity Hubからインストール

    各プラットフォーム向けのビルドサポートモジュールをインストールすることでSwitch Platformすることが可能です。

    ビルドサポートモジュールはUnity Hubからインストールします。
    【Unity】重いSwitch Platfomとは?3つの時短テクニックと共に解説_4

    モジュールを追加したいUnityバージョンの 歯車ボタン をクリックして 「モジュールを加える」ボタン をクリックしてください。

    【Unity】重いSwitch Platfomとは?3つの時短テクニックと共に解説_5
    「WebGL Build Support」にチェックを入れてインストール。するとSwitch Platformできるようになります。

    お悩みさん
    お悩みさん
    ビルドサポートを追加したけどSwitch Platformできない...

    Unityを起動したままビルドサポートモジュールをインストールした場合は、一度Unityエディタを再起動すると反映されます。もしうまく行かないという方は一度Unityエディタを再起動してみましょう。

    Unityにはさまざまなモジュールが用意されています。次の記事で詳しく解説していますのでぜひ読んでみてください。

    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 に設定してみます。

    iOSAndroid
    【Unity】重いSwitch Platfomとは?3つの時短テクニックと共に解説_6【Unity】重いSwitch Platfomとは?3つの時短テクニックと共に解説_6
    PVRTCに設定ETCに設定

    この時Unityのビルド設定がiOSだった場合、 png画像はPVRTCに変換する処理 が実行されます。

    【Unity】重いSwitch Platfomとは?3つの時短テクニックと共に解説_7

    Unityプロジェクト内のすべてのテクスチャの変換が終わるまでUnityは操作できません。

    再びSwitch Platformすると再度変換処理が走る

    iOSからAndroidにSwitch Platformしてみます。すると png画像がETCに変換する処理 が実行されるのです。

    【Unity】重いSwitch Platfomとは?3つの時短テクニックと共に解説_8

    つまり Switch Platformを実行するたびに圧縮テクスチャへの変換と圧縮作業時間に待たされてしまう ということです。

    テクスチャのクオリティ設定による待ち時間問題

    テクスチャのクオリティ設定は Compressor Quality で決めます。
    クオリティは「Fast」「Normal」「Best」から選びます。大抵の場合「Best(最高にきれいな品質)」を選択します。
    【Unity】重いSwitch Platfomとは?3つの時短テクニックと共に解説_9

    シンプルにゲームの質を上げることができるため、 よっぽどのことがない限りはBest以外を選択することはありません。

    しかし、 クオリティを上げるということは圧縮テクスチャの圧縮時間も長くなります。 Bestにすると思った以上に待ち時間が増えるので注意です。

    データが変わりやすい開発序盤はNormalにして、データが固定化する中盤以降Bestにするといった運用も考慮に入れておいた方が良いかもしれません。

    Switch Platformを時短する3つの方法

    スマホアプリを開発している最中にiOSで書きだしたあと、Androidでもテストしたいということはよくあります。ただ書き出すためだけに30分待つのはアホらしい。

    ということで、それらを解決する方法を3つ紹介します。

    Switch Platformを時短する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】重いSwitch Platfomとは?3つの時短テクニックと共に解説_10

    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のの設定方法は簡単です。

    【Unity】重いSwitch Platfomとは?3つの時短テクニックと共に解説_11

    チーム内で使用する同じネットワーク上にホストPCを用意し、Unity Acceleratorアプリをインストールして初期設定。

    開発者はUnityエディタUnity Acceleratorの設定を行います。
    【Unity】重いSwitch Platfomとは?3つの時短テクニックと共に解説_12
    メニュー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を時短する3つの方法

    ①Switch Platformの数だけUnityプロジェクトを作り時短

    ②Unity Acceleratorで時短

    ③Asset Import Overridesで時短

    ゲーム開発中はアセットはどんどん増えていきます。ファイルが増えればSwitch Platformの時間は長くなるため、そうなる前に対策しておきたいですね。

    今回紹介した3つのテクニックの中でのおすすめ順は 「③→②→①」 です。

    基本的にどれも無料で試すことが可能です。Unity開発にとって Swich Platformは鬼門 です。事前の対策をして開発時間を無駄にしないようにしておきたいですね。

    この記事があなたのゲーム開発に少しでもお役に立てたら嬉しいです。

    オススメ記事
    検証環境
    • Unity6000.0.32f1