再谈Unity调用Android的Activity

这段时间在研究Unity4.3开发环境下,如何调用由Android SDK4.4.2写的Activity。参考了很多网上的博客,百度出了几十篇大部分都是转载雨松MOMO的,这里必须向雨松MOMO表示敬意!但雨松MOMO写的博客太旧了,不少内容已经过时,我严格按他说的步骤进行,还是出了问题,所以本博客就是告诉大家在Unity4.3+Android SDK4.4.2环境,起动Activity的细节。

我这篇博客不会从零讲起,所以首先给出两个重要的链接,大家应该看一下:

第一个是雨松MOMO的  http://www.xuanyusong.com/archives/667  这篇博客的概念是正确的,但操作过程已过去

第二个是一个比较新的博客  http://www.narkii.com/club/thread-320335-1.html  这篇博客的概念和操作都是正确的,但细节有所省略,重点不够明确,我的博客即是对它的补充。

步骤:

1:打开Eclipse,创建一个Android工程,注意,要么在创建时选择创建库,要么创建之后在工程属性的Android页面勾选Is Library。

2:在工程属性中的Java Build Path -> Libraries中,用Add External JARs按钮,把Unity的classes.jar加进来,比如我的Unity是装在D盘,则路径是:D:\Program Files\Unity\Editor\Data\PlaybackEngines\androidplayer\development\bin。

3:写两个Activity,A和B,实现在A中启动B。这个过程可以参考上述推荐的博客,他们讲的很详细,我这里只是强调一下,A需继承自UnityPlayerActivity,而B则只需继承自Activity。

4:编译Android工程,会在bin目录下生成一个XXX.jar文件,注意,这个jar只有2k左右大小是不能用的,原因是很多class没有包含进去,比如很重要的R.layout.class。编译完了后必须使用Export导出,并选择正确的打包项才会生成一个100-600k大小的jar,这一点雨松MOMO没有讲。下面是我选择的打包项:

5:至此,Android部分基本OK。打开Unity创建一个Project,在Assets\Plugins\Android下面,把刚刚生成的jar拷贝过来,另外还有res文件夹。

6:到Unity的安装目录下D:\Program Files\Unity\Editor\Data\PlaybackEngines\androidplayer找到AndroidManifest.xml,将其拷贝到Unity工程的Assets\Plugins\Android目录下,然后修改它有两个地方要修改,1是把package改为你的android工程的包名,2是把<activity
android:name=这句等号后面的内容改为你的Android工程的主Activity的名字,比如我的:

<manifest

xmlns:android="http://schemas.android.com/apk/res/android"

package="com.example.unitytestactivity"

android:installLocation="preferExternal"

android:theme="@android:style/Theme.NoTitleBar"

android:versionCode="1"

android:versionName="1.0">

..........

..........

<activity android:name=".UnityTestActivity"

android:theme="@android:style/Theme.NoTitleBar.Fullscreen"

android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen">

注意名字前的点。第二句表示启动时不显示Title,这个问题曾折腾我很久。第三句直接拷贝。

7:写Unity下的脚本cs文件,这里没什么好说的,参考雨松MOMO。

8:Unity的Build Setting注意把Bundle Identifier改为你的Android工程的包名。

9:注意,从Unity中启动一个Activity的功能无法在Unity中模拟运行,必须安装到真机中才能看到效果,我曾傻傻的并郁闷的试了好久。估计后续的Unity版本会改进这个问题。

再谈Unity调用Android的Activity

时间: 2024-10-07 00:10:32

再谈Unity调用Android的Activity的相关文章

Unity调用Android的Activity

之前http://shuxiayeshou.blog.51cto.com/4452347/1932216 写了关于Unity与Android结合所遇到的问题及解决方法 总结一下,Unity做一个简单的场景,AndroidStudio建一个简单的项目,其中MainActivity是要继承自 UnityPlayerActivity的,这样Unity程序可以调用Android端MainActivity的方法了 那如果Android项目中还有一个NewActivity,我们要通过Unity把他打开咋办呢

unity调用Android功能

Unity需要调用Android的功能主要涉及两种方式,一种是使用Android的插件,另一种是导出为GoogleAndroid 工程,进行处理.用途是使用第三方的插件 或者 接入渠道的SDK. 1:使用Android的插件处理. 具体过程,搜索引擎有很多结果,不再赘述. 主要要注意: 导出的jar的时候直接使用Eclipse中的export选项,选择src中的所有以及gen中的R.java即可.另外unity-classes.jar不需要再次包含. 当需要同时使用多个插件的时候: Androi

Unity调用Android配置方法

方法一:发布eclipse android工程(如图勾选),如同IOS发布xcode一样,在eclipse中编写调用 方法二: 操作过程配置要点: 1.新建Android工程,注意包路径比如我的是com.zx,其他步骤直接下一步完成 2.勾选Mark this project as a library 3.新建Android工程编写相关接口方法后,复制bin文件(只需要zx.jar).res资源包.AndroidMainfest.xml配置文件 4.复制到Unity工程中Plugins/Andr

Unity教程之再谈Unity中的优化技术

这是从 Unity教程之再谈Unity中的优化技术 这篇文章里提取出来的一部分,这篇文章让我学到了挺多可能我应该知道却还没知道的知识,写的挺好的 优化几何体 这一步主要是为了针对性能瓶颈中的”顶点处理“一项.这里的几何体就是指组成场景中对象的网格结构. 3D游戏制作都由模型制作开始.而在建模时,有一条我们需要记住:尽可能减少模型中三角形的数目,一些对于模型没有影响.或是肉眼非常难察觉到区别的顶点都要尽可能去掉.例如在下面左图中,正方体内部很多顶点都是不需要的,而把这个模型导入到Unity里就会是

Unity 调用android插件

1. Unity的Bundle Identifier必须和你的android报名一致 Activity和View的区别: Activity应该是一个展示页面,View是页面上一些按钮视图等等. 如何调用Android插件:  (如果你把方法主入口中的) AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); //参数不变 AndroidJavaObject jo = jc.GetStat

unity调用Android百度地图

由于个人是Android小白,在这个配置上面被折磨了很久,因此写下这篇文章 工具:eclipse + unity5.6.1 首先去百度地图开发者平台下载你需要的资源,我只需要显示地图和定位,这个时候你一定要注意了,一定要把你所需要的功能全部选择了再下载,要不然BaiduLBS_Android.jar包里面只有你选择的那个单个需求的类,下载下来之后将BaiduLBS_Android.jar类复制个副本,将后缀改成.rar格式,解压出来(后面会用到里面的assets文件夹) eclipse中配置:

Unity调用Android类方法

1.  添加Unity的classes.jar文件 创建一个Android工程AndroidUnityDemo. 由于Unity的版本不同,直接在Unity安装包文件夹里面搜索classes.jar文件,如果有多个classes.jar文件,一般选择的是mono/Release文件夹下的classes.jar文件. 将classes.jar文件放在app文件下的libs文件夹下. 然后,更新一下. 2.  编写Android类 打开MainActivity.java类,让MainActivity

Unity调用Android原生的震动(简单)

要在unity中调用Android系统的震动,需要一个Vibrator类 ,通过AndroidManifest.xml文件设置权限了 如下: <uses-permission android:name="android.permission.VIBRATE" /> 在这里先给贴出英文文档及大概的翻译 : Class that operates the vibrator on the device. If your process exits, any vibration y

Unity调用Android的API实现分享功能&lt;转&gt;

问题:如何在unity3d的游戏中实现分享功能,如图 思路: 1.分享功能的实现方式有多种,较方便快捷的一种是直接调用android的API来调出系统的分享界面 2.unity3d里面调用android的API需要为此编写一个android的插件 3.在插件(android的jar包)里面调用Intent类来实现Activity间的消息传递,换出系统的分享控制台 代码: Android插件代码 1 package com.XXX.XXX; 2 3 import android.content.I