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.0 classes.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

  1. package com.example.plugintest;
  2. import android.app.Activity;
  3. import android.os.Bundle;
  4. import com.unity3d.player.UnityPlayerActivity;
  5. public class MainActivity extends UnityPlayerActivity {
  6. @Override
  7. protected void onCreate(Bundle savedInstanceState) {
  8. super.onCreate(savedInstanceState);
  9. }
  10. // only for test, C# in unity will call it
  11. public int GetInt(){
  12. return 1000;
  13. }
  14. }

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接口

  1. using UnityEngine;
  2. using System.Collections;
  3. public class AndroidTest : MonoBehaviour {
  4. // Use this for initialization
  5. void Start () {
  6. }
  7. // Update is called once per frame
  8. void Update () {
  9. AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
  10. AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
  11. Debug.Log("*********JerryTest*********" + jo.Call<int>("GetInt"));
  12. }
  13. }

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中增加一行:

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

全部AndroidManifest如下所示:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  3. package="cn.toltech.game.doubleboats"
  4. android:versionCode="1"
  5. android:versionName="1.0" >
  6. <supports-screens
  7. android:smallScreens="true"
  8. android:normalScreens="true"
  9. android:largeScreens="true"
  10. android:xlargeScreens="true"
  11. android:anyDensity="true"/>
  12. <uses-sdk
  13. android:minSdkVersion="14"
  14. android:targetSdkVersion="21" />
  15. <application
  16. android:allowBackup="true"
  17. android:icon="@drawable/ic_launcher"
  18. android:label="@string/app_name"
  19. android:theme="@android:style/Theme.NoTitleBar">
  20. <activity
  21. android:name="com.example.plguintest.MainActivity"
  22. android:label="@string/app_name" >
  23. <intent-filter>
  24. <action android:name="android.intent.action.MAIN" />
  25. <category android:name="android.intent.category.LAUNCHER" />
  26. </intent-filter>
  27. <meta-data android:name="unityplayer.UnityActivity" android:value="true" />
  28. </activity>
  29. </application>
  30. </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   

Unity5.0与Android交互的更多相关文章

  1. [Unity3D]Unity3D游戏开发之Unity与Android交互调用研究

    各位朋友,大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是blog.csdn.net/qinyuanpei.在前一篇文章中,我们研究了Android平台上Unity3D的手势操作并在之前的基础 ...

  2. WebView之javascript与android交互基础加强

    一.什么是js与android交互? 通俗一点就是使用js代码调用java代码,或者使用java代码调用js代码. 二.为什么要使用js与java代码交互? 1.可以做一些js网页做本身处理不了的事情 ...

  3. 使用Struts2服务端与android交互

    转自:http://www.cnblogs.com/android-html5/archive/2011/09/25/2534107.html android--使用Struts2服务端与androi ...

  4. H5跟ios、android交互跟数据对接

    需求: APP要用H5页面做展示,而且要获取到对应的商品ID,用户点击H5页面跳回APP原生页面. 方法: 先要判断用户是ios还是android设备(这里只考虑ios跟android,因为它俩写法还 ...

  5. Unity与Android交互实现

    主要参考了这篇文章: Unity与Android交互方案优化版 链接:https://www.jianshu.com/p/86b275da600e 自己的实现(unity获取内存和温度): andro ...

  6. Unity3D游戏开发之Unity与Android交互调用研究

    各位朋友,大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是blog.csdn.net/qinyuanpei.在前一篇文章中,我们研究了Android平台上Unity3D的手势操作并在之前的基础 ...

  7. 【Unity与Android】01-Unity与Android交互通信的简易实现

    前言 使用Unity也有不短的时间了,安卓包也打过不少,但是对Unity与Android的交互却知之甚少. 因工作需求,需要在Android平台接一些sdk(扩展功能).我就借此机会就了解了下Unit ...

  8. Qt5.3.0 for Android开发环境配置

    1.去官网下载Qt5.3.0 for Android 2.去http://developer.android.com下载Ndk 和SDk            3.去http://ant.apache ...

  9. windows下Qt5.1.0配置android环境搭建 good

    1.首先下载好需要配置的软件: 1>Qt 5.1.0 for Android (Windows 32-bit, 716 MB)(Info)下载地址: http://qt-project.org/ ...

随机推荐

  1. 最全Pycharm教程(26)——Pycharm搜索导航之文件名、符号名搜索(转)

    1.准备一个工程 向你的工程中添加一个Python文件,并输入一些源码,例如: 2.转到对应文件.类.符号 Pycharm提供的一个很强力的功能就是能够根据名称跳转到任何文件.类.符号所在定义位置. ...

  2. Linux打补丁的一个简单例子

        前言 在做开发的过程中难免需要给内核及下载的一些源码打补丁或者说是升级,所以我们学习在Linux下使用diff制作补丁以及如何使用patch打补丁显得尤为重要. diff与patch命令介绍 ...

  3. scala windows 安装

    下载 https://downloads.lightbend.com/scala/2.11.11/scala-2.11.11.msi 第一步:设置 右击我的电脑,单击"属性",进入 ...

  4. Qt 下载列表地址

    每次下载Qt总是找好长时间,收藏一下地址 Qt 下载列表地址 https://www.qt.io/download-open-source/#section-9 教育网镜像下载 http://mirr ...

  5. iis应用池内存溢出卡死优化

    1.修改回收阀值memoryLimit 在ASP.NET Web服务器上,ASP.NET所能够用到的内存,通常不会等同于所有的内存数量.在machine.config(C:/WINDOWS/Micro ...

  6. javax.persistence.EntityNotFoundException: Unable to find报错

    这类错id 可能是10,可能是27,也可能是其他数字 错误描述: javax.persistence.EntityNotFoundException: Unable to find 某个类 with ...

  7. mvc bundle的介绍及使用 转载自 http://www.ityouzi.com/archives/mvc-bundleconfig.html

    Asp.Net MVC4 BundleConfig文件合并.压缩,网站优化加速 浏览器在向服务器发送请求的时候,请求的文件链接数量是有限制的,如果页面文件少就没有什么问题了,如果文件太多就会导致链接失 ...

  8. LOJ#2471「九省联考 2018」一双木棋 MinMax博弈+记搜

    题面 戳这里 题解 因为每行取的数的个数是单调不增的,感觉状态数不会很多? 怒而记搜,结果过了... #include<bits/stdc++.h> #define For(i,x,y) ...

  9. hibernate核心及常用技术

    一.hibernate介绍 1.hibernate概述 hibernate是轻量级Java EE持久层解决方案,管理java类到数据库表的映射(ORM:对象关系型数据映射),并提供数据查询获取的方法. ...

  10. [YC703]ゴミ拾い Easy

    [YC703]ゴミ拾い Easy 题目大意: 二维平面内有\(n(n\le3\times10^5)\)个人和\(n\)个物品,第\(i\)个人在\((a_i,0)\)上,第\(i\)个物品在\((x_ ...