Unityを用いてのスマホアプリ開発にどう立ち向かうのか。
Unityは基本的に、iosやandroidのネイティブ機能を操作することが非常に不得意。
もちろん、それぞれのプラットフォームのネイティブ言語をコーディングができ、かつUnityとの連携方法を知っていれば別だが、
ネイティブオンリーに比べて、 かなり苦労することは間違いない。
Unityは書き出し時に、独自のUnity形式で書き出すため、デフォルトではネイティブの機能はUnityに依存している。
現状、思うところについて箇条書き
・SplashImage(ios):SplashScreenはUnityで設定できるが、SplashImageはUnityから設定するにはPostProcessBuildの記述が必要になる。
・StatusBar(ios&android):自作のライブラリを開発しておいたほうが良い。Unityはデフォルトでは非表示設定になっている。
・Dialog(ios&android):これはネイティブの操作がわりとしやすいため、利用して良い。(Unityにそういった機能が実装されている。)
・ActionBar(android) etc...:かなり苦労するため、事前にAndroid開発の知識がある人をメンバーに加えておく必要がある。
・Indicator:Unityが用意しているandroidのindicatorは左上表示になっていて微調整が聞かないため、ネイティブクラスのプラグインを用意しておく方が良い。
・NativeShare:有料アセットなど豊富に存在しているので、ためらわず購入
※ただし、シェア画面のカスタマイズはネイティブ領域になるため、Unityからできることが限られやすい。
Native Share for Android & iOS [Open Source]
・PushNotification:ある程度、Unityからアイコンや通知設定を施す必要がある。アセットもいくつかあるので内容を見て購入するなどの対応。
※最近、Unityにも機能が実装されているようだが、不具合もまだあるよう。
・CustomURL:ここらへんの概念は難易度があってつまづきポイントでもあるので、事前に検証しておくこと。
特にandroid端末はリリースしているメーカーごとによって、osのバージョンが同じでも動作や見た目が異なる可能性が高いため要注意項目となる。
※同スクリプトで、この端末はカメラ起動ができるが、異なる端末ではできない、など。
近年、スマホアプリ開発で悩まされる要因のひとつとして、様々なデバイス解像度・アスペクトが存在しているということ。
開発前に対応すべきターゲット端末とOSのVersionも確認しておく必要がある。
また、iPhoneXが登場したことにより、ノッチ付き(カットアウト)端末の種類も増加し、対応を強いられている。
Unity2018.3からはiosとandroidのSareAreaに対応した機能が実装ているが、全てが全てに対応しているわけではないと思われるので
特定のデバイス毎への対応が必要な可能性が高い
Handheld.StartActivityIndicatorにて表示は可能だが、前述に書いたとおり
androidのindicatorは良くないので自作、もしくはUnityにスピナー画像などを使用して実装する必要がある。
アプリ開発において、アプリ完結の内容だけではなく、こういったスマホ内で正常に動作するよう実装しておく必要があるため意識しておくこと
以降、iosとandroid固有の仕様や注意についてはそれぞれのページに記載。