UnityからAndroidのネイティブコードを呼び出すのは、かなり簡単…なんだけど、Staticじゃないインスタンスメソッドを呼び出すには、なんかちょっと一工夫必要だったので、メモ。

↓参考

UnityでAndroid JARファイルを呼び出す最も簡単な方法 - Androidネイティブプラグイン

Staticなメソッドを呼び出すには、単に CallStatic() すれば良いのだけど、インスタンスメソッドの場合は、当然インスタンス化しなくてはならないので、インスタンスを返すだけのStaticメソッドを用意。それを AndroidJavaObject として受け取って、Call() するだけ。

Unityスクリプト

AndroidJavaClass plugin = new AndroidJavaClass("jp.example.Hoge");
AndroidJavaObject jo = plugin.CallStatic<AndroidJavaObject>("instance");
jo.Call("piyo");

Java

class Hoge {
	public static Hoge instance() {
		return new Hoge();
	}
	
	public void piyo() {
	}
}

これだけで、UnityからJavaのインスタンスメソッドを呼び出せます。