起動に時間がかかったり、シーンからシーンへ遷移するときに端末スペックにもよるかもしれませんが、
読込時間がやたらかかるときがあります。
仕事でアプリを作成するときにiGUIを使って作成していますが、
インジケータが回る表現がぎこちなく、正直シーンがかわる直前に消えてしまうため、あまりよろしくないかなっと思いました。
できればシーンAがシーンBを読込開始した時から、
シーンBの表示が完了した時までをインジケータ表示したいなっと
イメージは以下のような

準備として、
Unity用のAndroidプラグインを作成する必要があります。
ネイティブ連携と私は呼んでいます。
UnityとAndroidの連携については公式サイトにも明記してありますので一読必須ですね。
機会があれば、作成方法をまとめたいと思います。
今回は簡単にProgressDialogクラスを使って読込中っという表示を行いたいと思います。
ネイティブ連携を行うMainActivityクラスのメンバ変数に
private ProgressDialog m_progressDialog;を定義し、アクティビティ作成時コールされるメソッドに
public void onCreate(Bundle savedInstanceState) {onLoadingIndicatorShow()がインジケータ表示メソッドとなります。
super.onCreate(savedInstanceState);
onLoadingIndicatorShow();
}
こんな感じで実装しました。
/*
* インジケータ表示
*/
public void onLoadingIndicatorShow(){
if(m_progressDialog == null){
m_progressDialog = new ProgressDialog(this);
}
m_progressDialog.setMessage("Please wait...");
m_progressDialog.setCancelable(false);
m_progressDialog.show();
}
/*
* インジケータ非表示
*/
public void onLoadingIndicatorDismiss(){
if(m_progressDialog != null){
m_progressDialog.dismiss();
}
}
ネイティブ連携を行なっているので
このアクティビティがMAIN属性指定していますので、起動時に以下のように表示されます。

Unity上ではスプラッシュ画像は黒一枚絵をセンタリング表示しています。
読込が完了し、シーンのオブジェクトからStart()のタイミングでネイティブメソッドコールを行います。
public void UNLoadingIndicatorDismiss(){とよんでやると
AndroidJavaClass aJavaClass = new AndroidJavaClass("Javaクラスのパッケージ名.MainActivity");
AndroidJavaObject aJavaObject = aJavaClass.GetStatic<AndroidJavaObject>("currentActivity");
aJavaObject.Call("onLoadingIndicatorDismiss");
aJavaObject.Dispose();
aJavaClass.Dispose();
}
ダイアログが非表示になり、Unityの画面が表示されます。
Show側をコールして、次のシーンの読込を開始し、次のシーンにて表示完了時にDismiss側をコールすることで
シーンからシーンへの読込中は、Androidシステムのインジケータを表示することが可能になりました。
使う?これ…
この記事へのコメント