読者です 読者をやめる 読者になる 読者になる

渋谷ほととぎす通信

完全趣味でやってるUnityメモ。説明できないところを説明できるようにするための個人ブログ。昨日の自分より少しでも大きく慣れるように。。。 ※所属団体とは一切関係がありません

本開発に入る前に知っておくべきUnityのSwitch Platfom地獄の回避方法


f:id:esakun:20150730215258g:plain

環境

  • Unity5.2

Unityはマルチプラットフォーム書き出しに対応しています。

  • iOS
  • Android
  • WebPlayer
  • WebGL
  • PS3
  • PS4
  • Xbox 360

などなど。

マルチプラットフォームに書き出し対応しているだけで、同時に複数のプラットフォームに書き出すことは出来ません。
下の図のように書き出したいプラットフォームを選択して、Switch Platformで環境を切り替える必要があります。

f:id:esakun:20150731233506p:plain

「なんだ、簡単じゃん」

って、思うかもしれませんが、Switch Platormは状況によってはすごく時間がかかってしまう処理です。ヘタすると30分以上作業が出来ません。 何に時間がかかっているのかというと、圧縮テクスチャや音声ファイルの変換作業です。

例えば、UIで使用しているサイズ1024☓1024pxのpng画像のフォーマットをiOSではPVRTC、AndroidではETCにしてみます。

iOS時の設定
f:id:esakun:20150801001733p:plain

Android時の設定
f:id:esakun:20150801001738p:plain

この時どういう処理が走るかというと、Unityのビルド設定がiOSだった場合、png画像がPVRTCに変換処理が走ります。
f:id:esakun:20150801002022p:plain

ここで、AndroidにSwitch Platformします。
すると、png画像がETCに変換処理が走ります。

f:id:esakun:20150801004325p:plain

また、再度iOSにSwitch Platformします。再度png画像がPVRTCに変換処理が走ってしまいます。
f:id:esakun:20150801002022p:plain

要はUnity側が変換後のデータをキャッシュしていないため、Switch Platformする度に変換処理が走ってしまうのです。

また、クオリティ設定をBestにすると数倍の時間がかかることになります。(もちろん画像自体はとても綺麗になるので、よっぽどのことがない限りはBest以外を選択することはありません)

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

1.Fast Platform Switchを使う

※2016.12.9時点 : アセットストアからなくなっています

f:id:esakun:20150731232649p:plain

Fast Platform Switch | AssetStore

Asset Storeで公開されている有料アセット『Fast Platform』です。

Up to 15x faster platform switch. No setup. One button. Instant cache. Boost your multiplatform productivity now!

※2016.12.9時点 : サイト閉鎖済み
https://jemast.com/unity/fast-platform-switch より

これを使うと、15倍早くなるということを公式サイトで謳っています。

使ったことがありますが、確かに早くなります。 しかし15倍早くなるとはいえ、大量の画像が存在した場合は無力ですので根本解決ではありません。

2.Switch Platformする分だけプロジェクトを作る

一番お手軽で確実な方法がこちら(チームライセンスもいりません)。

Switch Platformする分だけプロジェクトを作っちゃえばよいのです。

workspace/Unity/hoge-ios
workspace/Unity/hoge-android

みたいなディレクトリ構成で、iOSとAndroidのプロジェクトを分けています。Unityを多重起動しておけば同時にビルドもできるので便利です。

Fast Platform Switchと比べたデメリットは、 切り替える数だけプロジェクトが必要なのでHDDを圧迫することです。容量に余裕のあるマシンなら全く問題にならないでしょう。

重要なのは、画像などがまだ少ないプロジェクト初期段階にSwitch Platformを予め実行しておくということです。

本開発に入ると一気にアセットが増えてしまいます。そうなる手前でプロジェクトを分けておくと幸せになれるかもしれません。

まとめ

断然オススメなのは、Switch Platformする分だけプロジェクトを作るですが、 そもそもUnity側にもっと頑張ってもらって、せめて数秒で切り替わるくらいまで時短してもらえるとなーっと期待せずに待っています。

※追記2016.12.9 Unity5.5.0f3からローカルキャッシュサーバー機能が実装されています。