√ Android傳值至Unity(Android plugin)

Android部分,新增一個專案(因無UI部分,故建立時選擇「Add No Activity」即可),建立Library,並於Library中建立java檔,撰寫一公開的靜態回傳函式。
1️⃣ 建立Module(Library)
 選擇「File」→「New」→「New Moduld」。

 選擇Module的類型,在此選擇「Android Library」,點選出現藍色反白後點選「Next」。
 
 依序輸入Name,並點選Finish便會生成。其中Module name及Package name,IDE應會自動輸入,若欲自行更改也可;SDK基本上就跟專案建置時選擇的一樣,不必更動。

 生成後之Library在側邊欄位可看到。

2️⃣ ​Library中建立java
 選擇Library中的「java」→右鍵→「New」→「Java Class」

 只需要輸入Class name即可。(注意Kind要選擇Class。)

4️⃣ 於java檔中撰寫靜態函式。(要設為Public,否則會抓不到此函式)

package com.xin.unityplugin;  //package name

/**
 * Created by xin on 2018/5/2.
 */

public class UnityPluginClass {  //class
    public static String GetTextFromPlugin(int day) { //method
        return "Today is " + day ;
    }

    public static String GetTextFrom() {
        return "what happen?" ;
    }
}

5️⃣ 生成jar檔
 於右側點選「Gradle」叫出選單。

 尋找Library中的「assemble」,雙擊後使之生成函式庫。

 函式庫jar檔生成後位置會在:「Library資料夾」→「build」→「intermediates」→「bundles」→「release」→「classes.jar」。
 以此專案為例,函式庫jar檔生成後位置會在:UnitySocketPlugin/unitysocket/build/intermediates/bundles/release。

Unity部分,新增一個專案

1️⃣ 儲存Scenes
 選擇「File」→「Save Scenes」

2️⃣ 建立C# Scripts
 右鍵→「Create」→「C# Script」

3️⃣ 引用jar檔
 建立資料夾:「UnityPlugin」→「Android」→「libs」,並將方才Android Studio生成之「classes.jar」拖曳至此。

 最後Assets底下會有三個項目:

5️⃣ 建立3D Text物件
 建立3D Text物件,「Hierarchy底下右鍵」→「3D Object」→「3DText」


 或於「GameObiect」→「3D Object」→「3DText」。

6️⃣ 將Script加入3D Text底下(直接拖曳即可)

7️⃣ 撰寫C# Script
 →建立TextMesh物件。
 →建立AndroidJavaObject,後面路徑為「package.classname」,如下Package name:com.xin.unityplugin,Class name:UnityPluginClass。
 →呼叫函示並將回傳值置入Text物件中。
 (AndroidJavaObiect官方說明

using System.Collections; 
using System.Collections.Generic;
using UnityEngine;

public class UnityPlugin : MonoBehaviour {
    void Start () {
        Debug.Log ("Hello");
        TextMesh textMesh = GetComponent<TextMesh>();
        AndroidJavaObject plugin = new AndroidJavaClass ("com.xin.unityplugin.UnityPluginClass");
        textMesh.text = plugin.CallStatic<string> ("GetTextFromPlugin", 7);  //後面之數字為輸入值
//        textMesh.text = plugin.CallStatic<string> ("GetText");
    }
} 

 

 最後編譯並燒錄手機,即可讀取、顯示Android Studio函式所回傳之資料。

 

arrow
arrow

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