小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

unity 調(diào)用android函數(shù)

 kiki的號(hào) 2017-04-05
我們知道,安卓工程都有一個(gè)AndroidManifest.xml,里面指定了啟動(dòng)Activity等信息。u3d里我們并沒有給出這個(gè)文件,可見,一定是它在編譯的時(shí)候,自動(dòng)為我們添加了這些文件。
如何知道unity還為我們添加了什么文件,每個(gè)文件中有什么內(nèi)容呢?.apk文件其實(shí)就是一個(gè)壓縮包,在win上用win rar就能打開這個(gè)包。下圖是apk包的內(nèi)容。若要知道每個(gè)文件的具體內(nèi)容,就必須解析出apk,可以借助AndroidMutiltool(點(diǎn)擊下載)工具。這里提供了一個(gè)unity 導(dǎo)出的apk和用andoridMuting工具解析出的文件(點(diǎn)擊此處下載文件)。

	從上圖可以看到,u3d為我們添加了一個(gè)AndroidManfiest.xml。那么如何使用我們自定義的AndroidManifest.xml呢?很簡(jiǎn)單,只需要將自定義的Androidmanifest.xml放到指定的位置就可以了,至于具體什么位置,待會(huì)再說。

下面開始切入正題。

	unity如何調(diào)用android工程中的函數(shù)?思路是這樣的:
		第一、自定義啟動(dòng)Activity。(從上面的AndroidManifest.xml可知unity默認(rèn)的啟動(dòng)Activity是UnityPlayerNativeActivity)。若要此工程從自定義activity啟動(dòng),就需要自定義的AndroidManifest.xml。但unity不能直接編譯執(zhí)行java文件,所以要把MainActivity編譯,打包成jar庫,引入unity。
		第二、調(diào)用Activity中函數(shù)。unity全程只有一個(gè)Activity,所以我們可以通過獲取當(dāng)前Activity來獲取activity對(duì)象,通過jni調(diào)用activity的函數(shù)。
	
[csharp] view plain copy
  1. AndroidJavaClass jc = new AndroidJavaClass ("com.unity3d.player.UnityPlayer");  
  2. AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject> ("currentActivity");  

	有了思路,下面開始動(dòng)手實(shí)現(xiàn)。
	1、打開eclipse,新建android工程test001。記住包名(package name)后面會(huì)用。
	2、將unity下的android庫classes.jar復(fù)制到工程test001的libs目錄下。classes.jar路徑:安裝盤\Program Files (x86)\Unity\Editor\Data\PlaybackEngines\androidplayer\bin下。
		
	3、將classes.jar添加到j(luò)ava build path。
		方法有兩種。①右鍵classes.jar -> build path -> add to build path。②工程->屬性->java build path -> libraries -> addJars
		
	4、修改MainActivity.java。
		注意:setContentView(...)這句如果不注釋掉,你看到的將會(huì)是android工程的hello world界面。
		
	5、編譯工程。
	6、打包.class文件。 
		進(jìn)入工程目錄/bin/classes。里面有一個(gè)com文件下,該文件夾里存了多個(gè).class文件?,F(xiàn)在要將com文件夾打包。在classes下執(zhí)行jar -cvf myclasses.jar com。
	7、用unity新建項(xiàng)目test001,在Assets目錄中新建下列目錄
		
		myclasses.jar復(fù)制到bin下。將AndroidManifest.xml復(fù)制到Android目錄下。將res目錄復(fù)制到Android目錄下。
	8、在Assets目錄下新建一個(gè)c#腳本,關(guān)聯(lián)到主相機(jī)。腳本內(nèi)容如下
		
[csharp] view plain copy
  1. using UnityEngine;  
  2. using System.Collections;  
  3.   
  4. public class test : MonoBehaviour {  
  5.   
  6.     private AndroidJavaObject m_jo;  
  7.     // Use this for initialization  
  8.     void Start () {  
  9.         Debug.Log ("start***");  
  10.         AndroidJavaClass jc = new AndroidJavaClass ("com.unity3d.player.UnityPlayer");  
  11.         m_jo = jc.GetStatic<AndroidJavaObject> ("currentActivity");  
  12.         if (m_jo != null)  
  13.                         Debug.Log (m_jo);  
  14.                 else  
  15.                         Debug.Log ("get static object fail ***");  
  16.     }  
  17.       
  18.     // Update is called once per frame  
  19.     void Update () {  
  20.       
  21.     }  
  22.   
  23.     void OnGUI () {  
  24.         if (GUI.Button (new Rect (100, 100, 100, 50), "test_2")) {  
  25.             Debug.Log ("tset_2");  
  26.             Debug.Log( "the result is : " + m_jo.Call<int>("times_2", 5) );  
  27.         }  
  28.   
  29.         if (GUI.Button (new Rect (100, 200, 100, 50), "test_3")) {  
  30.             Debug.Log ("tset_3");  
  31.             Debug.Log( "the result is : " + m_jo.Call<int>("times_3", 5) );  
  32.         }  
  33.     }  
  34. }  

	9、編譯運(yùn)行。
		編譯時(shí),點(diǎn)BuildSetting -> Player Setting -> other Setting -> Bundle Identifier,將此項(xiàng)值設(shè)置為上面第①條提到的包名

	10、查看輸出log。
		log信息要通過logcat查看。進(jìn)入android sdk下的platform-tools目錄,里邊有個(gè)adb.exe。執(zhí)行命令./adb.exe logcat就可以看到log信息了。


	我上傳了這個(gè)工程需要用到的文件(如xml,myclasses.jar,res/)。還包含了MainActivity.java文件便于理解。http://download.csdn.net/detail/u012085988/6741421

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多