この文書の現在のバージョンと選択したバージョンの差分を表示します。
wiki:unity:tips:086 [2014/11/13 11:37] 127.0.0.1 外部編集 |
wiki:unity:tips:086 [2020/10/28 00:41] (現在) step |
||
---|---|---|---|
ライン 1: | ライン 1: | ||
====== 086 UnityからJavaの関数を呼び出す ====== | ====== 086 UnityからJavaの関数を呼び出す ====== | ||
- | ===== 概要 ===== | + | こちらの投稿は[[https://kazupon.org/?p=9666|移動]]しました。 |
- | Unity からAndroid、Javaのプログラムを呼び出してみます。ライブラリの作成にはEclipseを使います。 | + | |
- | ==== Android開発環境の構築 ==== | ||
- | [[http://izeef.web.fc2.com/develop/android/env_eclipse.html|Android開発環境の構築 Eclipse編]]を参考にしてEclipseのAndroid開発環境を構築します。 | ||
- | |||
- | ==== Jarライブラリを作成する ==== | ||
- | Eclipse を起動しファイル -> 新規 -> Androidアプリケーション・プロジェクトを選択し新規アプリケーションを作成します。 | ||
- | |||
- | {{:wiki:unity:tips:unity_plugin_java_001.png?300|}} | ||
- | |||
- | |アプリケーション名|HelloWorld| | ||
- | |プロジェクト名|HelloWorld| | ||
- | |パッケージ名|plugin.helloworld| | ||
- | |||
- | 「カスタム・ランチャーアイコンを作成する」「アクティビティーの作成」のチェックを外し、「このプロジェクトをライブラリとしてマークする」にチェックを入れプロジェクトを作成します。 | ||
- | |||
- | {{:wiki:unity:tips:unity_plugin_java_002.png?300|}} | ||
- | |||
- | ソースを追加します。srcフォルダを右クリック -> 新規 -> クラスと選択しソースファイルを追加します。 | ||
- | |||
- | {{:wiki:unity:tips:unity_plugin_java_003.png?300|}} | ||
- | |パッケージ|plugin.helloworld| | ||
- | |名前|HelloWorld| | ||
- | |||
- | |||
- | 空のHelloWorld クラスが作成されました。次はプラグインを実装していきます。 | ||
- | |||
- | <code java> | ||
- | package plugin.helloworld; | ||
- | |||
- | public class HelloWorld | ||
- | { | ||
- | public HelloWorld() | ||
- | { | ||
- | } | ||
- | |||
- | public static String getHelloWorld_Static() | ||
- | { | ||
- | return "Call getHelloWorld_Static() Method"; | ||
- | } | ||
- | |||
- | public String getHelloWorld() | ||
- | { | ||
- | return "Call getHelloWorld() Method"; | ||
- | } | ||
- | } | ||
- | </code> | ||
- | |||
- | ただ文字列を返すだけの単純なプラグインです。この状態でビルドするとプロジェクトのbinフォルダにhelloworld.jar ファイルが作成されます。Eclipse 側の作業はここまでです。 | ||
- | |||
- | |||
- | ==== Java プラグインの配置 ==== | ||
- | * Unity を起動し新規プロジェクトを作成します。HelloWorld とします。プロジェクトのツリーからCreate -> Folder と選択し「Plugins」フォルダを作成します。Plugins フォルダの中に「Android」フォルダを作成します。 | ||
- | * 作成したAndroidフォルダに先ほど作成したhelloworld.jar ファイルを入れます。 | ||
- | |||
- | {{:wiki:unity:tips:unity_plugin_java_004.png?300|}} | ||
- | |||
- | ==== プラグイン呼び出しスクリプトの作成 ==== | ||
- | * Assets/Plugins 以下にファイルを追加します。Assets を右クリック -> Create -> C# Script と選択し、名前をHelloWorldPlugin として作成します。 | ||
- | * HelloWorldPlugin をダブルクリックして編集します。呼び出し用の関数を作成します。 | ||
- | |||
- | <code java> | ||
- | using UnityEngine; | ||
- | using System.Collections; | ||
- | using System; | ||
- | |||
- | ublic class HelloWorldPlugin : MonoBehaviour | ||
- | { | ||
- | public static String getHelloWorld_Static() | ||
- | { | ||
- | #if UNITY_ANDROID | ||
- | AndroidJavaClass plugin = new AndroidJavaClass("plugin.helloworld.HelloWorld"); | ||
- | String hello = plugin.CallStatic<String>("getHelloWorld_Static"); | ||
- | return hello; | ||
- | #endif | ||
- | } | ||
- | |||
- | public static String getHelloWorld() | ||
- | { | ||
- | #if UNITY_ANDROID | ||
- | AndroidJavaObject plugin = new AndroidJavaObject("plugin.helloworld.HelloWorld"); | ||
- | String hello = plugin.Call<String>("getHelloWorld"); | ||
- | return hello; | ||
- | #endif | ||
- | } | ||
- | } | ||
- | </code> | ||
- | |||
- | Unity から呼び出す準備が整いました。 | ||
- | |||
- | |||
- | ==== プラグインを使ってみる ==== | ||
- | 作成したHelloWorld プラグインが使用できるか試してみます。Assets フォルダにC# スクリプトを追加します。名前は「test」として | ||
- | アプリケーションの中身を実装していきます。今回は動作確認さえできれば良いので、ログを出力するだけのものを実装します。 | ||
- | |||
- | <code csharp> | ||
- | using UnityEngine; | ||
- | using System.Collections; | ||
- | |||
- | public class test : MonoBehaviour | ||
- | { | ||
- | void Start () | ||
- | { | ||
- | Debug.Log ( HelloWorldPlugin.getHelloWorld() ); | ||
- | Debug.Log ( HelloWorldPlugin.getHelloWorld_Static() ); | ||
- | } | ||
- | void Update () | ||
- | { | ||
- | } | ||
- | } | ||
- | </code> | ||
- | testスクリプトをHierarchy のMain Camera のドラッグ&ドロップして関連付けします。 | ||
- | |||
- | ==== ビルドと実行 ==== | ||
- | 実際にAndroid端末にインストールして実行してみます。 | ||
- | Unity Editor ではエラーが出ますので注意して下さい。 | ||
- | |||
- | * 出力されるログを確認するために、C:\usr\local\Android\android-sdk\tools\ にあるddms.bat を実行します。 | ||
- | * Unity のFile -> Build Setting -> Platform にAndroid を選択した状態で、Switch Platformを選択します。 | ||
- | * 端末をUSB で接続した状態で、Build And Run でビルド/実行します。 | ||
- | |||
- | {{:wiki:unity:tips:unity_plugin_java_005.png?300|}} | ||
- | |||
- | getHelloWorld() getHelloWorld_Static() 関数が呼ばれているのが確認できます。 |