先開啟Eclipse,新增一個Android專案

 

 

之後請到Unity的安裝路徑:Unity\Editor\Data\PlaybackEngines\androidplayer\development\bin

複製這個檔案到剛剛創建的Eclipse專案的libs資料夾內

之後再對該專案按下F5重新整理,即可看到如下圖所示:

 

再來對src點選右鍵→ New → Package

 

之後對新增出來的Package點選右鍵 → New → Class

 

之後輸入以下程式碼


 

package ToastForUnity;

import android.widget.Toast;
import com.unity3d.player.UnityPlayer;

public class AndroidToast
{
    //Method必須為static
    public static void showToast(final String content, final boolean isLong)//傳入的參入必須為final,才可讓Runnable()內部使用
    {
        UnityPlayer.currentActivity.runOnUiThread(new Runnable()
        {
            @Override
            public void run()
            {
                //若使用者傳入的boolean為true,則Toast顯示3.5秒;否則為2秒
                Toast.makeText(UnityPlayer.currentActivity, content, isLong ? Toast.LENGTH_LONG : Toast.LENGTH_SHORT).show();
            }
        });
    }
}


 

都好後Ctrl+S存檔,再對專案點右鍵 → Export,選擇JAR file

 

然後按照下面這張圖的方式勾選完畢後,按下Finish

 

 

 

之後開啟Unity,新建一個專案,並產生如下的資料夾

並將剛剛Eclipse產生的jar放到libs資料夾內

 

然後創建一個C#腳本,命名為AndroidBehaviour,程式碼如下,請直接複製貼上即可(這個腳本的目的在於取得jar內的資訊)


using UnityEngine;
using System.Collections;

public abstract class AndroidBehaviour<T> : MonoBehaviour where T : AndroidBehaviour<T>
{
    protected abstract string javaClassName { get; }

    private static T _instance;
    protected static T instance { get { return _instance; } }


    protected AndroidBehaviour() { _instance = this as T; }


    protected void CallStatic(string methodName, params object[] args)
    {
        using (AndroidJavaClass ajc = new AndroidJavaClass(javaClassName))
        {
            ajc.CallStatic(methodName, args);
        }
    }


    protected ReturnType CallStatic<ReturnType>(string methodName, params object[] args)
    {
        using (AndroidJavaClass ajc = new AndroidJavaClass(javaClassName))
        {
            return ajc.CallStatic<ReturnType>(methodName, args);
        }
    }


    protected ReturnType GetStatic<ReturnType>(string fieldName)
    {
        using (AndroidJavaClass ajc = new AndroidJavaClass(javaClassName))
        {
            return ajc.GetStatic<ReturnType>(fieldName);
        }
    }
}


 

再新增一個腳本,命名為Toast,程式碼如下


 

using UnityEngine;
using System.Collections;

public class Toast : AndroidBehaviour<Toast>
{
    protected override string javaClassName
    {
        //要呼叫的class所在的Package名稱.要呼叫的java class名稱
        get { return "ToastForUnity.AndroidToast"; }
    }

    /// <summary>
    /// 使用Toast
    /// </summary>
    /// <param name="message">要顯示的字串</param>
    /// <param name="isLong">true為3.5秒;false為2秒</param>
    public static void makeText(string message, bool isLong)
    {
        //第一個參數為要呼叫的Method名稱
        instance.CallStatic("showToast", message, isLong);
    }
}


 

都完成後,即可新增一個腳本來做測試是否成功呼叫Android的Toast功能了!

新增一個C#腳本,命名為Test,程式碼如下


 

using UnityEngine;
using System.Collections;

public class Test : MonoBehaviour
{
    private void Start()
    {
        Toast.makeText("成功的使用了Android的Toast了!", true);
    }
}


 

再來將Test和Toast放到同個物件上!

(在此範例我放到Camera上)

 

然後將檔案導出成apk,安裝在Android系統上執行!(無法再Unity上測試)

(在此安裝在BlueStacks模擬器上執行)

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 Yang 的頭像
    Yang

    Yang的部落格(轉貼文章請註記來源)

    Yang 發表在 痞客邦 留言(1) 人氣()