Unity和Android Studio 交互通訊

主要是 根據 參考資料3 的內容。本文儘量減少文字的 描述。參考資料1 有 一點 問題。

本文的內容需要 對照 參考資料3 來查看

建立 新的工程。

 

點擊 FINISH 按鈕,新建工程。

 

 

 

 

找到 libs 的文件路徑。右鍵 libs 文件夾,find in path 。

 

按 esc 按鍵 退出 find in path。

打開文件路徑。

 

安裝路徑下 的 UNITY 文件夾。(具體 UNITY 的設置 參考下一篇文章 參考資料2)

D:\Program Files\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Classes

classes.jar

複製粘貼 到 

E:\Android\AndroidStudioProjects\UnityTest\app\libs

文件夾,如下圖所示。

 

 

 

 

正常情況下,這裏就會有如下圖所示。

 

 

 

不做任何 處理,點擊 FINISH 按鈕後。

就新建了MainActivity ,右邊是初始腳本。

 

 

 

刪除

<activity android:name=".MainActivity"></activity>

 

 

複製初始模塊 的這個app 的 mainfests 文件夾的 AndroidMainfest.xml 文件的內容。

 

粘貼到 新建unity_exchage模塊 的這個unity_exchage 的 mainfests 文件夾的 AndroidMainfest.xml 文件的內容。

 

由於這2個模塊 中都有 MainActivity ,原文並沒有 說明 是哪個 MainActivity。因此 先 對 app 的MainActivity 進行修改。

後來發現 是 unity_exchage 的 MainActivity

 

 

 

import com.unity3d.player.UnityPlayerActivity;

 

 

這個時候,如下所示。

 

改爲如下所示。




下面就是在Android中編寫Unity要調用的方法了,例如我這裏只寫一個簡單的兩數求和的方法:

 

//兩樹求和
public int add(int a,int b)
{
    return a+b;
}

 

 

選中 unity_exchange 點擊build -- Make Module 'unityexchange'

 

等待一下,就會顯示如下所示。如果沒有,就重新試幾次。

 

使用 Build -- Make Project 或者 Build -- Rebuild Project 重新編譯工程。

工程 下 的 unity_exchange 的 build 的 intermediates 的 bundles 的debug沒有如下圖 所示 的文件,就多 重新編譯工程幾次。

 

右鍵 debug 文件夾,show in explorer

 

使用 Build -- Make Project 或者 Build -- Rebuild Project 重新編譯工程。
然後把debug文件夾下的classes.jar文件移動到libs文件夾中,並且把libs文件夾中的class.jar文件替換掉。然後將debug文件夾下的libs文件夾、res文件夾、AndroidManifest.xml文件導入到Unity的Assets/Plugins/Android文件夾下(沒有這個文件夾需先創建)。



 

AndroidManifest.xml就是 如下圖所示,的01_Unity_Message3/unity_exchange/src/main/AndroidManifest.xml

如果下圖中沒有 AndroidManifest.xml  文件,就把上圖所示的AndroidManifest.xml  複製粘貼到下面。


就把 把下面這3個文件(包含   AndroidManifest.xml )複製粘貼到 如下圖所示的  Unity 的位置。

Plugins/Android/




正常 的文件 結構如下所示。從 AS3.0 導入 過來的文件,都在 Plugins-- Android 裏面




新建腳本,掛載 上 Main Camera 上。


 

[csharp] view plain copy

  1. using System.Collections;  
  2. using System.Collections.Generic;  
  3. using UnityEngine;  
  4. using UnityEngine.UI;//使用 該引用,才能獲得 Text 組件。  
  5.   
  6. public class Android_Test : MonoBehaviour {  
  7.   
  8.     private Transform canvasTras;//UGUI的Canvas  
  9.     private Text text;//用來顯示 界面的文本  
  10.     private Button btn;//前端的按鈕  
  11.   
  12.     private AndroidJavaObject jo = null;  
  13.   
  14.   
  15.   
  16.     // Use this for initialization  
  17.     void Start () {  
  18.         //固定寫法  
  19.         AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");  
  20.         jo = jc.GetStatic<AndroidJavaObject>("currentActivity");//獲取當前Activity對象,即Android中的MainActivity  
  21.   
  22.         canvasTras = GameObject.Find("Canvas").transform;  
  23.         text = canvasTras.Find("Text").GetComponent<Text>();  
  24.         btn = canvasTras.Find("Button").GetComponent<Button>();  
  25.         btn.onClick.AddListener(Click);//按鈕點擊事件監聽下面的Click()方法  
  26.   
  27.     }  
  28.   
  29.     //這個方法是在界面點擊按鈕的時候調用,使用的是UGUI的BUTTON組件  
  30.     public void Click()  
  31.     {  
  32.         text.text = "";//點擊的時候先清空  
  33.         int res = jo.Call<int>("add", 56, 100);//調用Android中的方法,"add"爲方法名字,56,100,分別是想加的參數  
  34.         text.text = "56 + 100的結果是:" + res.ToString();//顯示前端  
  35.     }  
  36. }  

 

 

在 Unity 的 GameObject -- UI 新建 Text 和 Button

 

佈局如下所示




複製 package 的名字

 

粘貼到這裏 的package 位置。

 

 






點擊 update android SDK。等待讀條結束,UNITY 後臺程序。

在虛擬機 ,上 測試 APK

真機測試

如果是正常的,就會 進入 程序顯示,made with unity

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章