u3d与android通信1
2016-05-20 16:33
561 查看
简介
有一些手机功能,Unity没有提供相应的接口,例如震动,例如不锁屏,例如GPS,例如...
有太多的特殊功能Unity都没有提供接口,这时候,我们就需要通过使用Android原生的ADT编辑器去编写Java代码,然后打包jar导入到Unity工程,然后通过Unity提供的调用Android接口的函数去调用jar包中的函数即可。
这里我们就介绍一下使用Unity实现手机震动效果
1. Android提供jar文件,xml文件,res目录,libs目录
2. 通过AndroidJavaClass去调用Android函数
另外,这些功能只能在真机上运行!
1.下载AndroidSDK(需要包含ADT编辑器的)
官方下载连接:http://developer.android.com/sdk/index.html
2 创建Android项目
菜单位置:File ->New->Android Application Project
创建过程中,只有一下这个界面的内容需要更改,其他的使用默认的就行
![](http://img.blog.csdn.net/20130712181913609?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveHZfbHkxNQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
生成后解决方案的目录如图
![](http://img.blog.csdn.net/20130712181950656?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveHZfbHkxNQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
其中MainActivity就是我们需要编辑的java文件了
3. 导入Unity相关jar
Jar目录:unity的安装路径D:\Program Files\Unity\Editor\Data\PlaybackEngines\androidplayer\development\bin下的classes.jar
通过AddExternalArchives添加,如图:
![](http://img.blog.csdn.net/20130712182014375?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveHZfbHkxNQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
4. 导入jar后,就可以开始编辑相关的函数了,打开MainActivity
![](http://img.blog.csdn.net/20130712182039953?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveHZfbHkxNQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
添加unityActivity,使MainActivity继承UnityPlayerActivity,并把SetContentView函数删掉(不然到手机上启动程序的时候就会只看到一句HelloWorld),这里用一个比较函数Max作为例子,有参数,有返回值
5. 到这里,需要的函数已经写完,再修改一下xml文件
Xml文件在工程文件目录下,叫AndroidManifest.xml
![](http://img.blog.csdn.net/20130712182101437?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveHZfbHkxNQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
6. 接下来到处jar包
![](http://img.blog.csdn.net/20130712182124484?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveHZfbHkxNQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
![](http://img.blog.csdn.net/20130712182141453?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveHZfbHkxNQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
点击Export后选择Java目录下的Jar file,选择好路径之后按默认选项去到处jar文件即可
7. 到这里Android部分结束了
1. 设置PlayerSetting,要与Android的package对应上
![](http://img.blog.csdn.net/20130712182208312?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveHZfbHkxNQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
2. 在Assets目录下添加Plugins\Android目录,把Android的jar文件,res文件夹,libs文件夹,xml文件放入该目录
![](http://img.blog.csdn.net/20130712182243718?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveHZfbHkxNQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
注意:
A:libs目录下面不要有unity的安装路径D:\Program Files\Unity\Editor\Data\PlaybackEngines\androidplayer\development\bin下的classes.jar(要删除unity的classes.jar文件)
![](http://images.cnitblog.com/blog2015/154630/201504/221521068903592.png)
B:如果build时报Failed to re-package resources.
这个问题是因为Android后面SDK版本中使用了新的主题Theme,而我们在编译的SDK中可能包含,这里简单粗暴地方式是将values、values-11、values-14以及AndroidMenifest文件中有关主题Theme的定义和使用全都去掉,因为我们在这里创建的Android工程本身是与Unity层通信使用的,定义和使用Theme意义并不大,所以可以去掉;另外我们可以将其所以来的库引入或者使用最新的SDK去编译它。
C:如果build时报can't add script component because the script class cannot be found
![](http://images.cnitblog.com/blog2015/154630/201504/221527438287725.png)
![](http://images.cnitblog.com/blog2015/154630/201504/221527596879013.png)
3. 调用相关函数
![](http://img.blog.csdn.net/20130712182315421?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveHZfbHkxNQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
(注:初步了解这里的参数之所以填”com.unity3d.player.UnityPlayer”和”currentActivity”,是因为在生成jar文件的时候,已经指定了MainActivityclass继承UnityPlayerActivity,也在XML指定了MainActivity是Main class)
有一些手机功能,Unity没有提供相应的接口,例如震动,例如不锁屏,例如GPS,例如...
有太多的特殊功能Unity都没有提供接口,这时候,我们就需要通过使用Android原生的ADT编辑器去编写Java代码,然后打包jar导入到Unity工程,然后通过Unity提供的调用Android接口的函数去调用jar包中的函数即可。
这里我们就介绍一下使用Unity实现手机震动效果
实现内容简要说明:
1. Android提供jar文件,xml文件,res目录,libs目录2. 通过AndroidJavaClass去调用Android函数
另外,这些功能只能在真机上运行!
具体实现:
Android部分
1.下载AndroidSDK(需要包含ADT编辑器的)官方下载连接:http://developer.android.com/sdk/index.html
2 创建Android项目
菜单位置:File ->New->Android Application Project
创建过程中,只有一下这个界面的内容需要更改,其他的使用默认的就行
生成后解决方案的目录如图
其中MainActivity就是我们需要编辑的java文件了
3. 导入Unity相关jar
Jar目录:unity的安装路径D:\Program Files\Unity\Editor\Data\PlaybackEngines\androidplayer\development\bin下的classes.jar
通过AddExternalArchives添加,如图:
4. 导入jar后,就可以开始编辑相关的函数了,打开MainActivity
添加unityActivity,使MainActivity继承UnityPlayerActivity,并把SetContentView函数删掉(不然到手机上启动程序的时候就会只看到一句HelloWorld),这里用一个比较函数Max作为例子,有参数,有返回值
5. 到这里,需要的函数已经写完,再修改一下xml文件
Xml文件在工程文件目录下,叫AndroidManifest.xml
6. 接下来到处jar包
点击Export后选择Java目录下的Jar file,选择好路径之后按默认选项去到处jar文件即可
7. 到这里Android部分结束了
Unity部分
1. 设置PlayerSetting,要与Android的package对应上2. 在Assets目录下添加Plugins\Android目录,把Android的jar文件,res文件夹,libs文件夹,xml文件放入该目录
注意:
A:libs目录下面不要有unity的安装路径D:\Program Files\Unity\Editor\Data\PlaybackEngines\androidplayer\development\bin下的classes.jar(要删除unity的classes.jar文件)
![](http://images.cnitblog.com/blog2015/154630/201504/221521068903592.png)
B:如果build时报Failed to re-package resources.
这个问题是因为Android后面SDK版本中使用了新的主题Theme,而我们在编译的SDK中可能包含,这里简单粗暴地方式是将values、values-11、values-14以及AndroidMenifest文件中有关主题Theme的定义和使用全都去掉,因为我们在这里创建的Android工程本身是与Unity层通信使用的,定义和使用Theme意义并不大,所以可以去掉;另外我们可以将其所以来的库引入或者使用最新的SDK去编译它。
C:如果build时报can't add script component because the script class cannot be found
![](http://images.cnitblog.com/blog2015/154630/201504/221527438287725.png)
![](http://images.cnitblog.com/blog2015/154630/201504/221527596879013.png)
3. 调用相关函数
(注:初步了解这里的参数之所以填”com.unity3d.player.UnityPlayer”和”currentActivity”,是因为在生成jar文件的时候,已经指定了MainActivityclass继承UnityPlayerActivity,也在XML指定了MainActivity是Main class)
相关文章推荐
- Android Drawable Resources系列9:<scale>
- iPad、iPhone、Android 横屏、竖屏(window.orientation实现)的知识点
- Android手机闹钟服务AlarmManagerk开发案例
- [置顶] Android 自动更新 替代友盟自动更新
- Android:ViewPager中获取当前界面的Fragment
- 打造Android集合控件数据绑定(支持添加监听,支持AbsListView与RecycleView,支持异步加载等)(二)ORM注解以及解析
- Service与Android系统实现(1)-- 应用程序里的Service
- 【Android】22、活动的启动模式——singleInstance
- 【腾讯Bugly干货】Android性能优化典范之多线程篇
- Android Studio 快捷键使用
- Android 自定义日历控件
- 通过案例快速学会Picasso图片缓存库
- android service
- Android 获取dip数据的三种途径
- Android 中获取Apk的包名和类名的实现方法
- Android上下文context
- Android6.0权限管理
- MaterialDesign之Dialog
- 手机一键锁屏
- Android图片压缩、加水印