Unity之SDK接入(Unity與Android通信)


首先介紹一點關於Android與unity通信的知識:

完成通信主要靠unity中的class.jar包(在unity的安裝目錄下)。

在unity中調用android的方法:

jo.call("方法名"[,參數名])             其中[]代表可有可無。

在endroid中調用unityu的方法:

導入class.jar包,繼承UnityPlayerActivity,使用UnityPlayer.UnitySendMessage("游戲對象名","unity中的方法名","參數")

現在,我們已經有基礎了,可以動手操作了

1.eclipse中新建Android工程,導入Unity安裝目錄下的class.jar類,添加MainActivity.java代碼:

package com.example.test;

import com.unity3d.player.UnityPlayer;
import com.unity3d.player.UnityPlayerActivity;

import android.os.Bundle;

public class MainActivity extends UnityPlayerActivity  {
    
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
    } 
    public void Send() {
        UnityPlayer.UnitySendMessage("aaa", "AndroidCallBack", "okokoko");
    }
}
MainActivity

從eclipse中導出jar包

 2.Unity中,新建工程,

編寫EclipseCall.cs代碼如下:

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using System;

public class EclipseCall : MonoBehaviour
{
    private AndroidJavaClass jc;
    private AndroidJavaObject jo;
    private Text text;
    private Button btn;


    //單例模式
    private static EclipseCall _instance;
    public static EclipseCall Instance
    {
        get
        {
            if (_instance == null)
            {
                _instance = new EclipseCall();
            }
            return _instance;
        }
    }

    void Start()
    {
        text = GameObject.Find("aaa").GetComponent<Text>();
        btn = GameObject.Find("Button").GetComponent<Button>();
        this.name = "aaa";
        
        _instance = this;
        jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
        jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
    }

    public void ClickBtn()
    {
        jo.Call("Send");
    }

    public void AndroidCallBack(String str)
    {
        text.text = str;
    }
}
EclipseCall

將eclipse中導出的jar包拖進libs文件中

打包:

下面給大家捋一下思路:

從下圖中可以看出,在Unity中通過按鈕點擊事件調用eclipse中的Send方法,eclipse中Send方法又調用了unity的AndroidCallBack方法,通過eclipse傳遞參數到unity中,實現將參數顯示在Text游戲對象身上。

運行,點擊后的UI:

最后,給大家總結幾點注意事項

1.記得點擊eclipse菜單欄的Project——>Properties——>Java Build Path_》Add External JARs...——>選擇Unity安裝目錄下的class.jar——>Apply——>Apply and Cliose

2.**Activity.java必須繼承Unity,且要實現Android與Unity的通信,必須保證一個Android項目只有一個**Activity.java類

3.unity與anddroid通信,必須從unity端打包,即上述方式。

4.調用Unity的函數時記得參數的選擇,注意函數名,游戲對象。

5.腳本的綁定:unity中注意上面第4的游戲對象,必須綁定有調用的函數名的腳本。

6.unity打包的包名必須和eclipse中的對應,打包時記得添加場景。

7.如果在實際開發中(接SDK),打包是還必須注意填寫keystore,密碼。具體方法參考http://www.cnblogs.com/shirln/p/8384438.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM