Unity5.0与Android交互
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
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 initialization
- void Start () {
- }
- // Update is called once per frame
- void 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
Unity5.0与Android交互的更多相关文章
- [Unity3D]Unity3D游戏开发之Unity与Android交互调用研究
各位朋友,大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是blog.csdn.net/qinyuanpei.在前一篇文章中,我们研究了Android平台上Unity3D的手势操作并在之前的基础 ...
- WebView之javascript与android交互基础加强
一.什么是js与android交互? 通俗一点就是使用js代码调用java代码,或者使用java代码调用js代码. 二.为什么要使用js与java代码交互? 1.可以做一些js网页做本身处理不了的事情 ...
- 使用Struts2服务端与android交互
转自:http://www.cnblogs.com/android-html5/archive/2011/09/25/2534107.html android--使用Struts2服务端与androi ...
- H5跟ios、android交互跟数据对接
需求: APP要用H5页面做展示,而且要获取到对应的商品ID,用户点击H5页面跳回APP原生页面. 方法: 先要判断用户是ios还是android设备(这里只考虑ios跟android,因为它俩写法还 ...
- Unity与Android交互实现
主要参考了这篇文章: Unity与Android交互方案优化版 链接:https://www.jianshu.com/p/86b275da600e 自己的实现(unity获取内存和温度): andro ...
- Unity3D游戏开发之Unity与Android交互调用研究
各位朋友,大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是blog.csdn.net/qinyuanpei.在前一篇文章中,我们研究了Android平台上Unity3D的手势操作并在之前的基础 ...
- 【Unity与Android】01-Unity与Android交互通信的简易实现
前言 使用Unity也有不短的时间了,安卓包也打过不少,但是对Unity与Android的交互却知之甚少. 因工作需求,需要在Android平台接一些sdk(扩展功能).我就借此机会就了解了下Unit ...
- Qt5.3.0 for Android开发环境配置
1.去官网下载Qt5.3.0 for Android 2.去http://developer.android.com下载Ndk 和SDk 3.去http://ant.apache ...
- windows下Qt5.1.0配置android环境搭建 good
1.首先下载好需要配置的软件: 1>Qt 5.1.0 for Android (Windows 32-bit, 716 MB)(Info)下载地址: http://qt-project.org/ ...
随机推荐
- HTML文件编码
为了防止中文乱码,一般在网页头文件中加入 <meta http-equiv="Content-Type" content="text/html; charset=u ...
- 发布PHP项目(nginx+PHP7+mysql 5.6)
一.环境检查 1.检查nginx ps -ef | grep "nginx" 显示如下内容则代表nginx启动正常 root 3285 1 0 12:57 ? 00:00:00 n ...
- Effective C++笔记(四):设计与声明
参考:http://www.cnblogs.com/ronny/p/3747186.html 条款18:让接口容易被正确使用,不易被误用 1,好的接口很容易被正确使用,不容易被误用.你应该在你的所有接 ...
- linux中的vim 编辑一行内容,如何使光标快速移动到行首和行尾以及行中间某处啊?
光标定位G 移至行行首nG 移至第n行行首n+ 移n行行首n- 移n行行首n$ 移n行(1表示本行)行尾0 所行行首$ 所行行尾^ 所行首字母h,j,k,l 左移移移右移H 前屏幕首行行首M 屏幕显示 ...
- web2.0 HW3 相关阅读材料
W3C官网的材料简直看花眼……除了挂出的文档,www-style@w3.org的一堆邮件也藏着很多宝,但是看下来又眼花了……(好在宝们基本都被W3C吸收了=.=) 主要来自W3C的官网w3.org的一 ...
- 语言模型srilm基本用法
目录: 一基本训练 二语言模型打分 三语言模型剪枝 四语言模型合并 五语言模型使用词典限制 一.基本训练 #功能 读取分词后的text文件或者count文件,然后用来输出最后汇总的count文件或者语 ...
- ASP.NET WebAPI 05 参数绑定
ParameterBindingAttribute 在上一篇中重点讲了ModelBinderAttribute的使用场景.这一篇详细的讲一下ModelBinder背后的参数绑定原理. ModelBin ...
- 创建数据模型(View Models )和监控属性(Observables)
Knockout是建立在以下3个核心功能之上的: 1. 属性监控与依赖跟踪 2. 声明式绑定 3. 模版机制 在本节中,我们将学习3个核心里面的第一个.但在这之前,先让我们学习一下MVVM设计模式和V ...
- 定期删除30天以前的elasticsearch的日志
脚本/scripts/delete-elk.log #!/bin/bash DATE=`date -d "1 days ago" +%Y.%m.%d` ip=`ifconfig e ...
- HTML5 canvas绘制arcTo、translate和rotate的画法探索
arcTo(x1,y1,x2,y2,radius) ; 还要加上moveTo的点(x0,y0) ; 第一步:找到切点 过点 (x1,y1), (x0,y0)引射线与点(x1,y1),(x2,y2) ...