UnityでAndroidのネイティブプラグイン機能を使うためには、jarファイルを作ったりNDKでsoをつくったりいろいろありますが、両方共変更があるたびに作成し直さないといけないせいで少し手間です。今回はUnityだけで完結する、Androidのネイティブ機能のAlertDialogを表示する方法を書いていきます。
Activityを取得する
Activityを取得するにはAndroidJavaClassを使用してUnityPlayerクラスを取得し、そのクラスを使ってcurrentActivityをAndroidJavaObjectとして取得します。
1 2 |
AndroidJavaClass unity = new AndroidJavaClass ("com.unity3d.player.UnityPlayer"); AndroidJavaObject activity = unity.GetStatic<AndroidJavaObject> ("currentActivity"); |
AndroidJavaClassによってcom.unity3d.player.UnityPlayerクラスを作成しています。そしてそのクラスの静的クラスであるcurrentActivityを取得するためにGetStaticメソッドによってAndroidJavaObjectとして取得します。
AlertDialogを表示する
まずUIを描画するためにrunInUiThreadを呼び出します。
1 2 3 |
activity.Call ("runOnUiThread", new AndroidJavaRunnable (() => { //ここでAlertDialogを作成 })); |
次にAlertDialogを作成していきます。
1 2 3 4 5 6 |
AndroidJavaObject alertDialogBuilder = new AndroidJavaObject ("android.app.AlertDialog$Builder", activity); alertDialogBuilder.Call<AndroidJavaObject> ("setMessage", "message"); alertDialogBuilder.Call<AndroidJavaObject> ("setCancelable", true); alertDialogBuilder.Call<AndroidJavaObject> ("setPositiveButton", "OK", new PositiveButtonListner(this)); AndroidJavaObject dialog = alertDialogBuilder.Call<AndroidJavaObject> ("create"); dialog.Call ("show"); |
まずAlertDialog.Builderを作成します。そして、AlertDialog.Builderのインスタンスメソッドを呼び出し、各ステータスを追加します。作成に必要なステータスを追加したらAlertDialogを作成するためにAlertDialog.Builderのcrateメソッドを実行して作成し、showメソッドによってダイアログを表示させます。
リスナーを作成する
ダイアログのボタンを押した時のリスナーを作成します。
1 2 3 4 5 6 7 8 9 |
private class PositiveButtonListner :AndroidJavaProxy{ public PositiveButtonListner(test d): base("android.content.DialogInterface$OnClickListener"){ //リスナーを作成した時に呼び出される } public void onClick(AndroidJavaObject obj, int value){ //ボタンが押された時に呼び出される } } |
このクラスを作成し、AlertDialog.Builderに登録すればダイアログのボタンが押された時などにコールバックを受け取ることが出来ます。
終わりに
今回はUnityからAndroidのネイティブ機能を使う方法について書きました。基本的にはAndroidJavaClassとAndroidJavaObjectを作成し、書き方は違いますが普段Androidで使っているように設定したり実行したりします。あまりにもネイティブでいろいろなことを実行しようとするとコードがとても複雑になってしまいますが、簡単な機能であればUnityだけで完結するので楽になります。
次回からはSNSにシェアしていく方法について書いていきます。一番初めはFacebookSDKを使ってシェアする方法について書こうと思います。
では、また。