纳金网

标题: eclipse生成jar包并导入unity中无需继承unityplayer进行调用 [打印本页]

作者: 烟雨    时间: 2016-2-28 22:54
标题: eclipse生成jar包并导入unity中无需继承unityplayer进行调用
首先用eclipse建立工程,简单的建立一个测试的class
  1. package com.example.testsuifeng;

  2. import android.app.Activity;
  3. import android.os.Bundle;
  4. import android.view.Menu;
  5. import android.view.WindowManager;
  6. import android.view.MenuItem;


  7. public  class Suifeng  {
  8.         
  9. private Activity mActivity;
  10. public WindowManager mWindowManager;
  11. public  int addTwo(int a)
  12. {
  13.         return a;
  14.         }
复制代码

右键工程选择属性,设置工程的以library方式输出,点击apply 。运行得到导出的jar包后,导入到unity工程里,将

jar包放在Plugins->Android文件夹下
写上下面调用代码
  1. private AndroidJavaObject javaObj = null;
  2.         private AndroidJavaObject GetJavaObject()
  3.         {
  4.                 if (javaObj == null)
  5.                 {
  6.             AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
  7.             AndroidJavaObject obj = jc.GetStatic<AndroidJavaObject>("currentActivity");
  8.          
  9.             javaObj = new AndroidJavaObject("com.example.testsuifeng.Suifeng");
  10.         }
  11.                
  12.                 return javaObj;
  13.         }
复制代码
然后自己在GUI里获取GetJavaObject ,然后在调用java里的程序。
ceshi = GetJavaObject.Call<int>("addTwo", 5);
运行程序  你就会得到你想要的结果了
之前一直以为一定要继承unityplayer才可以,今天才搞明白,终于迈过了这个坑。
还有之前一直对AndroidJavaClass与AndroidJavaObject不太理解,现在才弄清楚
[url=]AndroidJavaClass[/url]是將.jar裡,所定義的class實體掉出來讓你使用,呼叫該class所擁有的static functions
[url=]AndroidJavaObject[/url]是將.jar裡,所定義的class實體化成物件後,丟出來讓你使用。這時就可以呼叫這class一般的member functions




作者: xkjoy    时间: 2016-3-18 00:41
楼主,这样的话是不是retur new AndroidJavaObject("com.example.testsuifeng.Suifeng");即可看了你的代码,发现obj并没有用到,其实就是一句就行?我有空测试一下
作者: Mxiansheng    时间: 2016-7-10 13:22
好像行不通啊




欢迎光临 纳金网 (http://go.narkii.com/club/) Powered by Discuz! X2.5