U3D & AS丨Unity與安卓的互動
本帖為整合貼,學習各部落格方法,從這些方法中完善出一條成功互動的路
Unity與Android的互動方式
首先,我們要知道Unity與Android的互動方式有:
本部落格採用第一種方式進行互動,即將AS(AndroidStudio)匯出的arr包和AndroidManifest放到Unity,在Unity呼叫arr包裡的方法
互動操作步驟
在該部落格中,有幾點需要補充,否則無法打包成功!
Q1:aapt.exe package --auto-add-overlay -v -f -m -J gen -M AndroidManifest.xml -S "res" -I
A1:如果在Unity中匯入了res資料夾,則要刪掉res資料夾,主意報錯中的↓
AndroidManifest.xml:3: error: Error: No resource found that matches the given name (at 'icon' with value '@mipmap/ic_launcher').
若有這樣的資源無法找到的提示,刪掉對應的AndroidManifest.xml中這些程式碼
Q2:匯入AndroidManifest後app閃退
A2:按照Unity報錯提示,找到“stderr”和“標準輸出”中提示的錯誤,刪除jar或arr包中對應的那個檔案的那一行(解壓程式可開啟arr包),再重新打包。
Q3:無法像部落格上那樣點選按鈕出現想要的結果
1)、C# MyInteraction方法中“jo.Call("callUnityFunc", "U2J2U", "BeCallFunc", "yangx");”,“callUnityFunc”為arr包裡的方法,後面的三個為向這個方法傳入的引數。
轉到Java程式碼,看到這個方法是這樣的:
public void callUnityFunc(String _objName , String _funcStr, String _content) { UnityPlayer.UnitySendMessage(_objName, _funcStr, "Come from:" + _content); }
再來看一下UnityPlayer.UnitySendMessage這個方法是什麼用處:
點擊發送按鈕後,程式將向Unity傳送訊息。UnityPlayer.UnitySendMessage() 引數1表示傳送遊戲物件的名稱,引數2表示物件繫結的指令碼接收該訊息的方法,引數3表示本條訊息傳送的字串資訊
因此Unity場景中要有一個叫“U2J2U”的遊戲物體、這個物體上掛載的指令碼有“BeCallFunc”方法,將“yangx”傳到了“BeCallFunc”方法。
再來看下C# BeCallFunc方法:
public void BeCallFunc(string _content)
{
setMsg(ref _content);
}
這時我們也可以更改BeCallFunc方法,在另一個Text裡顯示,更好的區別於其他結果。這樣就實現了該方法。
Q4:AS如何操作
A4:見下文
Add:AS的操作方法
新增Button後,程式報紅
解決方法:連結
AS匯出arr:
1、Build—Clean Project
2、Build—Make Module‘app’
2、在左側“Project”的目錄樹app-build-outputs-arr下,即是。