上個文章 "Android Studio 匯出 JAR 檔" 中,已經成功的將 Android JAR 檔匯出囉!
現在已經確定流程是正確的了,接下來我們要將 Unity classes.jar 加到專案中。


步驟一:
開啟 Unity 安裝目錄下的 bin 資料夾。
Unity > Editor > Data > PlaybackEngines > androidplayer > release > bin
image1.jpg 

補充說明,新版的 Unity 的 classes.jar 位置有點不一樣,分別是
Unity > Editor > Data > PlaybackEngines > AndroidPlayer > Variations > mono > Release > Classes
image12.jpg

Unity > Editor > Data > PlaybackEngines > AndroidPlayer > Variations > il2cpp > Release > Classes
image13.jpg

我想這應該是對應 Android Configuration 底下的 Scripting Backend 吧?這邊我沒測試過,若有人實際測試過的,歡迎分享!
image14.jpg

 


步驟二:
複製資料夾中的 classes.jar 檔案

image2.jpg

 

 

步驟三:
回到專案中,在 Test > app > libs 上點選貼上

image3.jpg


按下 OK 之後,就會複製一份 classes.jar 到專案裡面,但還沒完成喔! 

image4.jpg

 


步驟四:
在 classes.jar 上按下滑鼠右鍵,選擇 Add As Library...

image5.jpg


再點選 OK 之後就完成囉!
image6.jpg


快去看 build.gradle 裡面,是不是多出這行呢?
image7.jpg 

如果步驟四沒有出現 Add As Library... 選項的話,可以直接將以下程式碼貼到 dependencies 裡面,結果是一樣的。

 
compile files('libs/classes.jar')
 



步驟五:
到 Test > app > src > main > java > com.test.tw.test 上按下右鍵,選擇 New > Java Class
image8.jpg


建立一個 Class

image9.jpg  

 

建立後繼承 UnityPlayerActivity,程式碼如下

 
package com.test.tw.test;

import com.unity3d.player.UnityPlayerActivity;

public class MyDialog extends UnityPlayerActivity {
}
 



步驟六:
加入 AlertDialog 對話框,這是一個 Android 內鍵就有的功能,因為非常基本,且不須額外添加權限,是個很好的測試夥伴!可用來測試專案是否成功,

 
package com.test.tw.test;

import android.app.AlertDialog;
import com.unity3d.player.UnityPlayer;
import com.unity3d.player.UnityPlayerActivity;

public class MyDialog extends UnityPlayerActivity {

   public static void Show(final String title, final String content)
   {
      UnityPlayer.currentActivity.runOnUiThread(new Runnable() {
         public void run() {

            AlertDialog.Builder builder = new AlertDialog.Builder(UnityPlayer.currentActivity);
            builder.setTitle(title).setMessage(content).setCancelable(false).setPositiveButton("OK", null);
            builder.show();
         }
      });
   }

}
 



這邊需要注意的是,因為我是用 static 的 function,用 static 的話有個好處,就是我們的 JAR 比較不會跟別的第三方 JAR 衝突,也比較好加到別的第三方 AndroidManifest.xml 裡面。
使用 static 的話,若需要 Context 時,可以使用 UnityPlayer.currentActivity
只要是寫給 Unity 去呼叫的 function,請記得加上 runOnUiThread 喔!
在接收的參數那邊,記得加上 final,否則在 public void run() 裡面可能會抓不到喔!


步驟七:
匯出 JAR
image10.jpg


完成!

image11.jpg

 

 

範例下載:https://drive.google.com/file/d/0B0QPre3qvuw-Sy1Kb2JJeWl2VVk/view?usp=sharing&resourcekey=0-LBFUJhSE-pxnYpa3BOHLEA

參考網站:http://www.thegamecontriver.com/2015/04/android-plugin-unity-android-studio.html

 

該教學的一系列文章:
Android Studio 匯出 JAR 檔
Android Studio 匯出 JAR 檔 - 加入 Unity classes.jar
Android Studio 匯出 JAR 檔 - 在 Unity 中調用 Android Function
Android Studio 匯出 JAR 檔 - 在 Android 中呼叫 Unity Method

 

可能會遇到的問題:
Android Studio 匯出 JAR 檔 - 呼叫 Function 無反應
Android Studio 匯出 JAR 檔 - broken class file

 

arrow
arrow

    岳 發表在 痞客邦 留言(0) 人氣()