1. 目标

1) Unity3D可调用Android Java函数(在.jar中)

2) Java可调用Unity3D函数

3) Unity3D可调用Android C函数(在.so中)

2. 测试环境

1) Unity5.0

2) JDK:jdk-8u25-windows-i586

3) Android SDK



4) Eclipse :adt-bundle-windows-x86中自带的

3. 创建Java工程

第一步

第二步


第三步


第四步: Configure Laucher Icon,不做任何修改,不要把你的Image File在这儿加入,它会强行修改Image File的尺寸,在后面把它直接放入res/drawable即可。

第五步

第六步:Blank Activity采用默认值即可。

第七步:删除下面红色标记部分


注:若其基类不是Activity,则在左边PlugInTest上点右键,然后选择Properties,进入如下界面:


4. 修改Android工程

4.1 导入Unity5.0classes.jar

1) 其中定义了 UnityPlayerActivity<它的基类是Activity>,其源码位置:

C:\Program Files\Unity\Editor\Data\PlaybackEngines\androidplayer\com\unity3d\player)

2) classes.jar位于:C:\Program Files\Unity\Editor\Data\PlaybackEngines\androidplayer\release\bin,其导入方法如下图所示:

4.2 替换Launcher Icon

把自己制作的ic_launcher.png覆盖res/drawable-xxx目录中的ic_launcher.png

4.3 修改MainActivity.java

package com.example.plugintest;import android.app.Activity;import android.os.Bundle;import com.unity3d.player.UnityPlayerActivity;public class MainActivity extends UnityPlayerActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);    }    // only for test, C# in unity will call it    public int GetInt(){    return 1000;    }}


4.4 把Android内容导出到Unity5.0

4.4.1 生成plugintest.jar

1)进入PlugInTest的Properties中,并勾选“Is Library”

2) Project->Clean

3) Project->Build Project

4) 生成的plugintest.jar见bin目录

4.4.2 把PlugInTest中内容放入Unity5.0

把以下内容都于Unity Project的“Assets\Plugins\Android”目录中。

1)bin目录下的plugintest.jar

2)bin目录下的AndroidManifest.xml (可根据需要增加其它的Activity或权限)

3) 整个res目录

其结果在Unity Project如下图:

5. 修改Unity工程

5.1 修改Android 【Player Settings】



5.2 访问Java接口

using UnityEngine;using System.Collections;public class AndroidTest : MonoBehaviour {// Use this for initializationvoid Start () {}// Update is called once per framevoid Update () {AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");Debug.Log("*********JerryTest*********" + jo.Call<int>("GetInt"));}}


UnityEngine.AndroidJavaClass与java.lang.Class及其子类对应。

UnityEngine.AndroidJavaObject与java.lang.Object及其子类对应。




5.3 导出apk

File->Build Run

当导出apk时,可能遇到下面的问题:

Unable to find unity activity in manifest. You need to make sure orientation attribute is set to fullSensor manually.

需在AndroidManifest中增加一行:

<meta-data android:name="unityplayer.UnityActivity" android:value="true" />

全部AndroidManifest如下所示:

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="cn.toltech.game.doubleboats"    android:versionCode="1"    android:versionName="1.0" >    <supports-screens        android:smallScreens="true"        android:normalScreens="true"        android:largeScreens="true"        android:xlargeScreens="true"        android:anyDensity="true"/>    <uses-sdk        android:minSdkVersion="14"        android:targetSdkVersion="21" />    <application        android:allowBackup="true"        android:icon="@drawable/ic_launcher"        android:label="@string/app_name"        android:theme="@android:style/Theme.NoTitleBar">        <activity            android:name="com.example.plguintest.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>

6. Android Native Plug

对于Android平台(armv7,x86)的Native Plugin, lib*.so应放于以下目录中:

1) X86平台: Assets/Plugins/Android/libs/x86/
2) armv7平台:Assets/Plugins/Android/libs/armeabi-v7a/



参考:http://docs.unity3d.com/Manual/PluginsForAndroid.html


更多相关文章

  1. ACTION_PICK与ACTION_GET_CONTENT
  2. Android热插拔事件处理流程--Vold
  3. Error running app: Instant Run requires 'Tools | Android(安
  4. 实现三星S3蒲公英水波纹效果(三)——Activity水波纹实现篇
  5. Android(安卓)user defined service handling
  6. Android(安卓)AIDL 实例
  7. android TraceView (图形化性能测试工具)使用入门笔记
  8. Android使用webview让服务器上的js调用java代码的方法
  9. Android(安卓)View刷新机制

随机推荐

  1. Android开发之旅: Intents和Intent Filte
  2. Android登陆页面软键盘弹起避免遮挡按钮
  3. INSTALL_FAILED_INSUFFICIENT_STORAGE 这
  4. Android ico
  5. android中的bundle传送数据
  6. 常用的小方法,避免忘记,在此记录一下
  7. Android little error records
  8. android中的有道词典实例
  9. android 制作的精美闹钟
  10. Android SDK和最新ADT下载地址 + 环境搭