Unity3d 与 Android之间的互相调用

Unity3d 开发的过程中,总会遇到各种调用Android的情况,本文以Eclipse IDE开发

  1. 引入classes.jar包,路径:打开文件位置->Data->PlaybackEngines->androidplayer->Variations->mono->release->classes->classes.jar。

  2. 创建的MainActivity需要继承UnityPlayerActivity。cs脚本中调用Android代码

    AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
  3. 调用Android常用的api 如下

  4. Android调用Unity3d代码

    UnityPlayer.UnitySendMessage("Main Camera", "OnMessage", "Hello u3d");  //Main Camera 是Scenes中的Objtct,OnMessage 是方法,最后传入参数
  5. 创建Eclipse工程, Package Name的名字需要与Unity3d 中的Package Name 相同

  6. 编写MainActivity类

    import android.app.Activity;import android.content.Context;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import com.unity3d.player.UnityPlayer;import com.unity3d.player.UnityPlayerActivity;public class MainActivity extends UnityPlayerActivity {       Context mContext = null;String strData = "";@Overrideprotected void onCreate(Bundle savedInstanceState) {       super.onCreate(savedInstanceState);//setContentView(R.layout.activity_main);mContext = this;UnityPlayer.UnitySendMessage("Main Camera", "OnMessage", "Hello u3d");//调用Unity3d方法}public void SetData(String str){       strData = str;}public String GetData(){       return strData;}}
  7. 导出jar包,只需要导出src目录即可

  8. Unity3d 导入jar包,放置路径Assets->Plugins->Android->libs,导入AndroidManifest.xml文件到Assets->Plugins->Android,并修改AndroidManifest.xml文件,特别需要注意android:icon!!!

    <?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.example.mygame"    android:versionCode="1"    android:versionName="1.0" >    <uses-sdk        android:minSdkVersion="16"        android:targetSdkVersion="21" />      <application        android:allowBackup="true"        android:icon="@drawable/app_icon"        android:label="@string/app_name" >        <activity            android:name=".MainActivity"            android:label="@string/app_name" >            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>                      <meta-data android:name="unityplayer.UnityActivity" android:value="true" />        </activity>    </application></manifest>
  9. Unity3d 编写cs代码,添加到Main Camera上

    using System.Collections;using System.Collections.Generic;using UnityEngine;public class Launch : MonoBehaviour {           private AndroidJavaObject jo;    // Use this for initialization    void Start () {               Debug.Log("Launch");        if (Application.platform == RuntimePlatform.Android)        {                   AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");            if (jc != null)                jo = jc.GetStatic<AndroidJavaObject>("currentActivity");        }        SetData("abc");        GetData();    }// Update is called once per framevoid Update () {       }    public void OnMessage(string str)    {               Debug.Log("OnMessage " + str);    }    public void SetData(string str)    {               if (jo != null)            jo.Call("SetData", str);    }    public void GetData()    {               if (jo != null)        {                   string str = jo.Call<string>("GetData");            Debug.Log("GetData " + str);        }    }}

Demo参考地址:https://download.csdn.net/download/wangningzk123/12581772

更多相关文章

  1. 让Ubuntu和Android同时运行(Ubuntu on Android)
  2. Android(安卓)Studio中同步代码时报:Received status code 400 fr
  3. Android中webview跟JAVASCRIPT中的交互
  4. android:launchMode="singleTask" 与 onNewIntent(Intent intent
  5. 【Android】AIDL介绍和实例讲解
  6. Android问题笔记
  7. Android(安卓)中文 SDK —— ADT 14.0.0 (ADT14插件更新说明)
  8. 把应用跑在android上
  9. Android(安卓)图形系统剖析

随机推荐

  1. Android 5.0新控件 AppBarLayout | 嵌套
  2. Android避免应用出现在最近使用APP列表里
  3. Android绘图之ComposeShader,PorterDuff.m
  4. Android中CoordinatorLayout(协调布局)的
  5. windows下配置安卓开发环境
  6. 多图片上传Android,服务器端实现
  7. Android Setting 设置项添加到快速搜索
  8. 【Android】查看程序每个方法所花费的时
  9. [android]寫一個system/bin 下的可執行文
  10. adb命令(不断补充)