android 引用非 android 工程,Unity3D调用android方法(非插件方式)
關于Unity3D工程與android工程的轉換與合并,請參考我的另外一篇博客,如果你對Unity3D工程加入到android工程的過程不熟悉,也請先看完下面這篇博客: android與Unity3D交互,fragment顯示unity3d視圖。 下面,我們來說說本博客的終端,Unity3D調用android的
關于Unity3D工程與android工程的轉換與合并,請參考我的另外一篇博客,如果你對Unity3D工程加入到android工程的過程不熟悉,也請先看完下面這篇博客:
android與Unity3D交互,fragment顯示unity3d視圖。
下面,我們來說說本博客的終端,Unity3D調用android的方法:
1.首先,在網絡上大家可以看到很多把android project打包,然后以插件的方式,放入Unity3D工程中來調用的方式,這種方式,我不做評論,但是很麻煩,所以我也沒有進行嘗試,大家有興趣可以到網絡上搜索一下看看。
2.如果講Unity3D的project導出為android project然后進行再次開發的過程中,需要Unity3D調用android的方法,這個時候,再使用1中的方法,顯然是不合適的。
那么我們要怎么樣來做呢?分為下面幾部分:
1.在初始化UnityPlayer的Activity中添加方法,如下:
/**
* 測試Unity調用Android的方法
*/
public void testMethod(String param){
System.out.println("參數為:"+param);
}
對于提供的方法,不可以進行UI操作,因為Unity3D對于android的UI線程來說,只是個子線程,如果要進行UI操作,可以使用Handler發消息。
2.在Unity工程中,利用c#文件來書寫,Unity調用的代碼:
public static void ActivateShareImage(string content)
{
if (Application.platform == RuntimePlatform.IPhonePlayer)
{
_PressButton3(content);
}
else if (Application.platform == RuntimePlatform.Android)
{
UISystem.Console("test method!");
AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject jo = jc.GetStatic("currentActivity");
jo.Call("testMethod", "unity");
}
else
{
}
}3,如果你已經有android項目了,那么就把新修改的Unity3D的項目導出為android project的,把新導出的project中的assets的文件夾,替換掉之前老的project中的,這樣做的目的是更換Unity的改動,如果改動了其他的東西,也是這樣更換的,但是如果你的assets文件夾下還有其他資源,請保留。
如果,你沒有android項目,那么就把Unity3D的項目導出為android的project項目使用。
4.對于AndroidJavaClass這個類,以及它提供的方法,大家可以參考下面的網站:
AndroidJavaClass 安卓Java類
這樣,就可以完成調用了,根本就不需要使用插件。關于android向Unity3D發送消息,日后會發博客敘述。
總結
以上是生活随笔為你收集整理的android 引用非 android 工程,Unity3D调用android方法(非插件方式)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机ppt文字1是什么原因,ppt让答
- 下一篇: bind配置文件解析