1. 程式人生 > >U3D & AS丨Unity與安卓的互動

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下,即是。