朝陽をおかずに飯を食え

アプリ開発チーム「マツケソフト」(一人)の開発ブログだったり開発ブログでなかったりします。絵もかきます。Unity / Android な話題が多め。

Unity で作った Android アプリを iOS に移植した際にはまったところをまとめてみた

こんにちは、Matsukesoft です。
この度、もともと Android 向けに作っていたシフトシューターを iOS 向けに移植しました。
Unity 及びビルド周りで対応が必要だった部分、はまった部分がいくつかあったので、ここで紹介しておこうと思います。

お品書きはこんな感じ

  • 環境
  • Mac に環境を移す
  • テクスチャの解像度がさがる
  • フレームレートが下がる(超もっさり)
  • 例外処理でアプリが落ちる
  • (番外編)ビルドが激遅鈍足丸

では張り切ってどうぞ

 

■環境

まずは、それぞれの制作環境です。

Android ビルド環境: SuerfacePro2、 Windows 8 、Unity 5.1.3f1

iOS ビルド環境 :Mac mini (6年位前のもの)、 OSX Xcode は移植時点(2015/08 頃)で最新のもの 、Unity 5.1.3f1

Mac に環境を移す

もともとメインは Windows で開発しているので、Mac にプロジェクトを持っていく必要があります。
最初は、windows 上でいったん Xcode 用プロジェクトにビルドしてそれを LAN で Mac に転送しようと思っていたのですが、
頭おかしいくらい速度が出なかったので(原因不明)この方法はあきらめました。

次の方法として、シフトシューターは SVN で管理していたので、mac 側でもチェックアウトしてビルドするようにしました。
(このために、Win 版と同じバージョンの Unity を DL しなおしています)

チェックアウトしたらプロジェクトは無事に Mac 側の Unity で開くことができました、、、が、
いくつか問題が発生しました。

 

■テクスチャの解像度が荒くなる

とりあえずプロジェクトを動かしてみると妙にテクスチャの解像度が低くなっていました。
特に、Live2D で動かしていたシフ子はひどい顔に。

原因は Unity の Quality Settings でした。
Unity は プラットフォームごとに Quality のセッティングができます。で、そこにはテクスチャの解像度やシャドウの ON/OFF など様々な設定があります。
これが AndroidiOS で設定が異なっていたためテクスチャの解像度が異なっていました。

Unity - マニュアル: 画質設定

基本、Quality Settings の設定をそろえるだけで大丈夫ですが、テクスチャに関しては、さらに個々のテクスチャで解像度の設定をオーバーライドできるので注意が必要です。

 

■フレームレートが下がる(超もっさり)

Mac の Editor 上で動作させていたときは特に違和感なかったのですが、iPod touch で動かしたところ FPS が下がってもっさりしてしまいました。

フレームレートの設定は Unity 上で EveryVblank (毎フレーム更新)にしており、Android ではこれだけで 60 FPS になりました。

が、iOS ではこれだけではたりず、デフォルトでは Vblank 自体が 30 FPS しかでないみたいです。

iOS で 60 FPS 出すにはスクリプトから明示的に次の記述が必要です。

 

Application.targetFrameRate = 60;

 

シフトシューターはすべての動作がフレームレート依存だったので、すぐにわかりましたが、deltaTime をつかった可変フレームレートに対応したゲームを作っていると気づきにくいかもしれないので、一度確認しておくといいかもしれません。

 

■ 例外処理でアプリが落ちる

これも iOS 版でのみ起こった現象ですが、null になっている GameObject の transform にアクセスしようとして、アクセス例外が出たときに、Editor Android では(エラーは吐くものの)動き続けるのですが、iOS ではアプリごと落ちてしまうようです。

 

 

まぁ、エラーに気づいてちゃんと直しておけばよかっただけの話なのですが。リリース後に twitter からの報告で気づいたので更新版を出しなおすことになりました。

テストプレイ中にエディターでエラーが出ていればちゃんと直しましょうという単純な話でもあります・・・

■ (番外編)ビルドが激おそ

古い mac mini だったため unity -> xcode -> binaly までに合計で 20 分程度かかっていました。

mac 買い替えようかと何度思ったことか。おかげでスパロボはとても進みました。

 

次は、iOS を公開してみての反共的な部分を共有したいと思います。