====== 088 UnityスクリプトからAndroidActivityを切り替える ====== ===== 概要 ===== Unity のカレントアクティビティを取得し、Unity側からAndroidのActivityを切り替えてみます。 ==== Activityの作成 ==== Eclipse を起動し適当なAndroid アプリケーションを作成します。 プロジェクトの名前は、Activity の名前はCallActivity としました。 {{:wiki:unity:tips:unity_callactivity_001.png?300|}} さらにファイルを追加し、アクティビティ起動用のクラスを用意しておきます。 {{:wiki:unity:tips:unity_callactivity_003.png?300|}} ==== Jarライブラリの作成 ==== CallActivity を右クリック -> エクスポートからsrc 以下のファイルを選択し、Jarライブラリを作成します。 「このプロジェクトをライブラリとしてマークする」にチェックを忘れずに入れます。 {{:wiki:unity:tips:unity_callActivity_002.png?300|}} Eclipse 側の準備は終了です。 ==== Unityプロジェクトの作成 ==== * Unity を起動し、プロジェクトを新規作成します。名前はCallActivityJavaとしました。 * Assets/Plugins/Android ディレクトリにAndroidManifest.xml を配置します。 * AndroidManifest.xml は、Eclipse で作成したCallActivityディレクトリの中にあります。 * CallActivity.jarを Assets/Plugins/Android/bin ディレクトリにCallActivity.jar を配置します。 ==== AndroidManifest.xml ファイルの編集 ==== Unity でActivityの操作を行うため、専用にAndroidManifest.xml ファイルを編集します。 android:label="@string/app_name" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >// MainActivityのintent-filterタグは全て削除してください。 ==== Activity 切替えコードの実装 ==== 呼び出し用スクリプトを作成します。 using UnityEngine; using System.Collections; using System; public class Plugins { // Launch Activity. public static void LaunchActivity() { #if UNITY_ANDROID // get Unity Player Activity. AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); AndroidJavaObject unityActivity = unityPlayer.GetStatic("currentActivity"); AndroidJavaClass plugin = new AndroidJavaClass("com.hoge.callactivity.Plugin"); plugin.CallStatic("launchActivity", "com.hoge.callactivity.MainActivity", unityActivity ); #endif // #if UNITY_ANDROID } } これをUnityの任意のスクリプトからPlugins.LaunchActivity() として呼び出してあげればActivity が切り替わります。