Unity iOSでローディング中にアニメーションを再生する
今日はローディング中のアニメーションについて。
Unity Pro版であれば非同期なシーンのロードが行えるので話は簡単なのですが、UnityのFree版はシーンの非同期ローディングが出来ないのでどうしても画面が固まります。
しかし、実はこのシーンのロード中全スレッドを止めている訳ではなく、UIKit等でアニメーションする限り動かすことが出来ます。
例えば、以下のようなコードを用意する事で、オブジェクトのローディング中に画面にアニメーションさせる事が可能です。*1
この例の場合、以下のように実行します。
- まずシーンの適当なオブジェクト(破棄されないオブジェクト)にLoadingAnimation.csコンポーネントをアタッチします。
- xcodeプロジェクト直下に「sai1_1.png」〜「sai1_6.png」の画像を用意し、置いておきます。
- 後はLoadLevelの直前にLoadingAnimation.Instance.LoadStart();を呼びます。
すると、ロード中にアニメーションが実行されます。
以下の画像は実行例です。サイコロが表示されている時間は実際はローディングが行われており、画面がストップしている時間です。
検証してないので何とも言えませんが、実はLoadLevelAsyncでプライオリティ下げてコツコツロードするより、LoadLevelでガッツリUnityは停止・画面はこの手段でアニメーションさせる方が高速なんじゃないかと密かに期待しています*2。
Android版はまた今度試します。(出来るかは不明)
(インジケーターでも十分といえば十分‥かな?
Unity でロード時のインジケーター(グルグル回る画像)を表示する方法 - 強火で進め)
そう言えば、ResourcesにLoadAsyncが追加された模様です。これでResourcesのLoadで停止する事も減るかと。これはまた次回。