主要是 根據 參考資料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
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using UnityEngine.UI;//使用 該引用,才能獲得 Text 組件。
- public class Android_Test : MonoBehaviour {
- private Transform canvasTras;//UGUI的Canvas
- private Text text;//用來顯示 界面的文本
- private Button btn;//前端的按鈕
- private AndroidJavaObject jo = null;
- // Use this for initialization
- void Start () {
- //固定寫法
- AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
- jo = jc.GetStatic<AndroidJavaObject>("currentActivity");//獲取當前Activity對象,即Android中的MainActivity
- canvasTras = GameObject.Find("Canvas").transform;
- text = canvasTras.Find("Text").GetComponent<Text>();
- btn = canvasTras.Find("Button").GetComponent<Button>();
- btn.onClick.AddListener(Click);//按鈕點擊事件監聽下面的Click()方法
- }
- //這個方法是在界面點擊按鈕的時候調用,使用的是UGUI的BUTTON組件
- public void Click()
- {
- text.text = "";//點擊的時候先清空
- int res = jo.Call<int>("add", 56, 100);//調用Android中的方法,"add"爲方法名字,56,100,分別是想加的參數
- text.text = "56 + 100的結果是:" + res.ToString();//顯示前端
- }
- }
在 Unity 的 GameObject -- UI 新建 Text 和 Button
佈局如下所示
複製 package 的名字
粘貼到這裏 的package 位置。
點擊 update android SDK。等待讀條結束,UNITY 後臺程序。
在虛擬機 ,上 測試 APK
真機測試
如果是正常的,就會 進入 程序顯示,made with unity