查看原文
其他

程序丨如何在一个原生的安卓应用程序中嵌入Unity?

2017-09-22 王磊 Gad-腾讯游戏开发者平台

译者:王磊(未来的未来)

审校:崔嘉艺(milan21)


在这篇文章中,我的目的是帮你节省一些时间(我假设你拥有Unity和安卓开发所需要的基本知识),并且将引导你通过这些步骤来完成这个项目。这篇文章的主要想法是将一个Unity项目作为原生安卓应用程序中的一个库。 抓紧了,我们要开始了。


第1步:创建一个Unity项目


打开Unity桌面应用程序并创建一个新的项目。(我在Unity 5.5.0f3上工作,但这些步骤应该可以在任何版本上都能工作)。按照你喜欢的方式在Unity中进行工作。


第2步:支持安卓的回退按钮


添加一个对象,并附加下面的这个脚本。在unity的项目里,默认情况下不支持安卓的后退按钮。所以让我们来添加一个脚本来支持安卓的后退按钮。



第3步:导出你的项目


文件→构建设置。

选择你的场景。

在平台部分选择安卓平台。

将纹理更改为ETC2格式

将构建系统更改为Gradle构建。

单击玩家设置按钮→在检视器选项卡→其他设置中,将包的名称添加到“包标识符”的下面(请参见下图)。

标记导出,并进行导出。



这将导出你的Unity项目,让它成为一个安卓项目。


第4步:将这个项目导入到Android Studio


文件→新建→导入项目→选择在步骤3中进行导出的文件夹。

如果Android Studio要求更改该项目以选择gradle构建方式,那么选是。


第5步:将该项目转换为库项目


打开清单文件并删除/注释掉有关intent的代码,我们不希望这个应用程序像应用程序一样运行,而是希望它像库一样运行。



打开模块的gradle文件,定位到下面这一行:



并修改为:



构建这个项目,并将aar文件放在一边。aar文件应该位于这个位置上:PROJECT_FOLDER\build\outputs\aar。


第6步:构建你的原生安卓应用程序,并使用上面的aar文件作为库


l  创建你的原生安卓应用程序。

l  向上方的aar文件添加一个新的模块:


文件→新建模块→导入JAR / AAR软件包,并选择你的aar文件。



确保在settings.gradle文件中有如下一行:



在你的主模块(应用程序)中添加一个依赖关系。



同步gradle。


第7步:如果需要的话,解决gradle的“合并”问题


在步骤6最后的地方,如果你像我要求的那样同步gradle的话,你可能会收到下面这样一个合并错误:



这是因为合并会试图使用库的图标和主题。不要害怕,我在这里来帮助你:),添加如下代码到你主要的原生应用程序的清单文件中,告诉合并使用这个清单的图标和主题而不是其他库的图标和主题。


将下面这行代码添加到清单文件的tag里面。 xmlns:tools="http://schemas.android.com/tools"

adding to the application 将下面这行代码添加到应用程序的tag里面。tagtools:replace="android:icon,android:theme"



再次构建你的项目。


第8步 : 调用UnityPlayer Activity


请注意,对后退按钮的支持(步骤2)有点棘手。在Unity的C#脚本中,Application.Quit()会关闭UnityPlayerActivity以及调用它的Activity(这个太糟糕了),所以为了处理它,创建一个中空的活动,在onCreate()中调用UnityPlayerActivity的intent,像下面代码这样。



哦,就是这样了。 虽然很长,但是它可以正常工作。


【版权声明】

原文作者未做权利声明,视为共享知识产权进入公共领域,自动获得授权。


----------------------

今日推荐


如何确定网络同步方案?基础同步模型分享

如何在Unity中实现类似C# Job系统的效果?

GAD腾讯游戏开发者平台招聘:高级运营经理

手游配置更新如何省流量?(含《王者荣耀》对比)


添加小编微信,可享双重福利

1.加入GAD程序猿交流基地

获取行业干货资讯,观看大牛分享直播

2.领取60G独家程序资料库,地址在小编朋友圈

包括腾讯内部分享、文章教程、视频教程等全套资料

 

↓长按添加小编GAD苏苏↓

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存