Unity3D打包apk的主界面和android组件共同显示
效果展示:
准备工作: 下面是我总结的流程,目的是使本文思路更加清晰一些: 1.Android端代码可以在Eclipse中开发(AndroidStudio没有试,应该也可以) 2.Unity3D端代码要在Unity中开发 3.Android和Unity3D端,两边都需要加入一些代码从而可以使之关联交互。 4.将Android端代码编译成jar文件以插件形式放入到Unity端中 5.在Unity中将整个项目Build成apk文件,然后安装到手机或模拟器里运行 本文主要讲解1,2,3。对于4,5建议大家去看雨松MOMO的Unity博客的第17篇和第18篇。 UnityPlay: 在编写Android端和端代码前,有必要先了解一下可以使两部分交互的类UnityPlay。 个人理解UnityPlay是个Unity提供给外部交互的一个接口类。为什么是“个人理解”?这我不得不爆粗口了,TMD官网 根本就没有相关的API和文档(如果大家有谁找到一定给我来一份,就当我骂自己了)。 在关联Android时,想拿到UnityPlay以及相关类的jar包可以从下面的地址找到:Unity安装路径\Editor\Data\PlaybackEngines\androidplayer\bin在bin文件夹下有一个classes.jar的jar文件,它就是我们想要的。 而在bin同目录下有一个src文件,点击到最后有3个类,分别是UnityPlayerActivity.java,UnityPlayerProxyActivity.java,UnityPlayerNativeActivity.java。前两个打开个后只有一行代码,说的是UnityPlayerActivity和UnityPlayerProxyActivity 都继承自UnityPlayerNativeActivity。而打开UnityPlayerNativeActivity中居然有代码,而且我估计这应该是 UnityPlayerNativeActivity的源码。由于关于UnityPlay的资料我只找到这么一个,所以我把UnityPlayerNativeActivity中 的代码都贴出来,如果我注解有不对的地方希望大家指正。
[AppleScript] 纯文本查看 复制代码
?
看完这个类后就知道了为什么在自定义的Activity中继承了UnityPlayerActivity等类以后,只要重写了onCreate并调用 super.onCreate()方法后不需要任何其他的代码就会自动的显示出Unity3D的视图。因为初始化Unity视图的代码都在 UnityPlayerNativeActivity父类中实现了。 android端代码: 在写android代码的时候,一定要导入Unity3D提供给我们的jar包,jar包的位置我在上面说了。引入jar包加入到 buildpath中这些最基本的我就不多说了。要想和Unity交互,我们就不能继承android提供给我们的Activity,我们 需要继承刚才jar包中引入的Unity提供的Activity类,一共有这么3个: UnityPlayerActivity,UnityPlayerProxyActivity,UnityPlayerNativeActivity。具体区别不知道,因为没有文档,没有API, 没有源码(这里再次鄙视一下)。刚才我们看过UnityPlayerNativeActivity的代码(虽然很短,但我觉得这个就是源码 ),知道UnityPlayerActivity,UnityPlayerProxyActivity都是它的子类,而且最终父类为NativeActivity。所以我们继承 Unity提供的最外层的子类是最好的选择,我这里选择的是UnityPlayerActivity,因为名字最简单,觉得该封装的都应 该封装好了。
[AppleScript] 纯文本查看 复制代码
?
最后看一下Android端的布局文件,布局很简单,上下各有一个button按钮,两个按钮中间是Unity的视图。
[AppleScript] 纯文本查看 复制代码
?
Android端的代码就介绍完了,很简单。唯一的难点就是UnityPlayerActivity和UnityPlayer的使用,就这两个破 玩意花了我好几天的时间,很简单的东西不知道为什么官方不给个文档或者API(也可能我太挫没找到。。。) Unity3D端代码: 先看一下我的项目结构: JavaScript存放的是脚本 Models存放的是我在Assert Store中下载的免费的一些模型文件 Plugins下是我的Android工程,具体做法参考网上教程(这里推荐雨松大神的第17篇) Prefab我是调整模型后定义的预制体 在场景中,我只有一个摄像机,和一个直射光。将脚本绑定到摄像机上,然后将之前调整好的5个预设模型添 加到脚本的相应对象中。 下面是脚本的代码,关于模型的旋转缩放是直接用了雨松MOMO的一篇文章中的代码,然后再加上了本例中的 一些逻辑而组成的。
[AppleScript] 纯文本查看 复制代码
?
最后就是在Unity3D中将工程Build成APK文件,然后再手机或模拟器中运行(如果手机或模拟器连着Eclipse则 可以打出log方便调试找错)。 |
Unity3D打包apk的主界面和android组件共同显示相关推荐
- android 仿微信demo————微信主界面实现
android 仿微信demo----微信启动界面实现 android 仿微信demo----注册功能实现(移动端) android 仿微信demo----注册功能实现(服务端) android 仿微 ...
- Android Studio 使用教程(5)---打包apk
Android Studio 使用教程(5)---打包apk 本章节讲述使用Android studio 打包apk的过程 1.Build -> Generate Signed APK...,打 ...
- 关于Mac Android 打包 APK
目录 关于Mac Android 打包 APK 方式一:使用Android Studio生成 1.点击Build->Generate Signed apk,首次点击可能会提示输入操作系统密码 2 ...
- 【错误记录】Android Studio 打包 apk 文件报错 ( The destination folder does not exist or is not writeable )
文章目录 一.报错信息 二.解决方案 一.报错信息 在 Android Studio 工程中 , 打包 APK 文件时 , 报错 ; Android Studio 打包 apk 文件报错 : The ...
- cocos2dx3.2打包apk
原文地址:https://my.oschina.net/Jacedy/blog/350226 一.下载Android环境 搭建Android环境需要用到Android SDK.NDK.Ant和JDK: ...
- Android组件化方案
版权声明:本文为博主原创文章,欢迎大家转载! 转载请标明出处: http://blog.csdn.net/guiying712/article/details/55213884 ,本文出自:[张华洋的 ...
- Android组件化方案最佳实践
舞动着键盘和鼠标,我誓言要把这个世界写的明明白白 本文出自门心叼龙的博客,属于原创类容,转载请注明出处.https://blog.csdn.net/geduo_83/article/details/8 ...
- Android 组件化方案,从入门到精通
Android组件化项目地址:Android组件化项目AndroidModulePattern Android组件化之终极方案地址:http://blog.csdn.net/guiying712/ar ...
- Unity3D应用--打造Android车载3D车模桌面(车载主界面开发)
前言 Android中应用加载Unity3D来显示3D效果参考上一篇博文:Unity3D导出Android工程(Android中应用Unity3D) 透明背景实现参考另一篇博文: 在Android中U ...
- Android直接用手机打包apk!
你没有看错,用手机浏览器访问Jenkins,就可以打包apk,并生成下载二维码,发送邮件通知测试人员下载,从此解放双手,告别打包测试.先上本人手机邮箱收到的打包成功通知效果图: 废话少说,开干! 本人 ...
最新文章
- 最新版,别的可以不用看了,zabbix 监控 esxi
- RealNVP与Glow:流模型的传承与升华
- 最明的int和Integer的区别
- WebRTC的现状和未来:专访W3C WebRTC Chair Bernard Aboba(上)
- html清除溢出,深入理解CSS overflow:hidden——溢出,坍塌,清除浮动
- 复习深入笔记01:对象/可变与不可变类型/字符编码/闭包
- python实现编辑距离,最长公共子序列,最长公共子串
- 单元格中指定内容标红_你一直都不知道,键盘上“F4”在office中的强大功能
- 网页版bpc电波对时_BPC电波对时app下载|BPC电波对时安卓版下载 v1.04 - 跑跑车安卓网...
- 群晖系统硬盘损毁的修复
- CSI.SAP2000.v19.1.1 Win32_64 2CD通用有限元软件
- haversine根据经纬度算距离
- vmware之centos7 删除分区
- USBKey使用openssl链接
- python syntactic suger
- 【美团面经】后台研发一面
- Android中Fragment的分屏显示处理横竖屏显示
- 使用muscle进行多序列比对
- 关于NdFeB样品的测量阶段总结
- Javascript+webdriverio App自动化demo