• Android平台,虽然与IOS开发类似,但因为其硬件没有完全的标准化,所以会出现各式各样的问题。这一点在官方文档的第一段就提到了。   Unity Android基本环境的搭建还是比较容易的: 1.Unity本身没有下载Android...

    版本:unity 5.6  语言:C#

     

     总起:

    Android平台,虽然与IOS开发类似,但因为其硬件没有完全的标准化,所以会出现各式各样的问题。这一点在官方文档的第一段就提到了。

     

    Unity Android基本环境的搭建还是比较容易的:

    1.Unity本身没有下载Android插件的,首先 File -> Build Settings -> [切换到Android] Open Download Page 下载插件;

     

    2.安装JDK,我使用的是Java8,不知道新出的Java9能不能用:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

     

    3.安装SDK,这边我推荐安装Android Studio,再在其中中安装SDK:https://developer.android.com/index.html(进入该网页可能需要科学上网,然后下载SDK具体的包现在直连下载都很快了,不需要去网上找网友提供的包了);

     

    4.安装Android模拟,我这边选择的是Nox英文版;

     

    5.如果需要使用IL2CPP,安装一下NDK,5.6.3需要的版本是r10e,不要下错了。

     

    Unity Remote

    Unity远程调试插件,适用于Android、IOS和tvOS,一开始我以为这个可以直接在Unity中调试Android,实则不能,所以这个功能很鸡肋,不过也有他的使用场景,所以还是介绍一下吧。

     

    调试步骤:

    1.首先在Google Play中找到Unity Remote 5应用,把它下载安装到Android手机中,如果没有科学上网的同学,可以在百度上找一下;

     

    2.将手机插上USB接口,允许USB调试,手机端就准备完成了,模拟器方面,我测试了3种:Genymotion可以直接运行,而Nox和Bluestacks没有效果;

     

    3.接下来就是Unity中的设置,通过Edit -> Project Settings -> Editor,找到Unity Remote选项,将Device更改成Any Android Device:

     

     

    4.然后直接运行Unity工程就会看到效果。

     

    所以这个是做什么用的呢?首先大家可以理解为Android手机为一个扩展屏,然后Android手机的触屏输入、加速度、陀螺仪、相机、指南针、GPS和摇杆可以作为Unity工程的输入。

     

    再然后……就没了,就多了个测试输入的功能,如果想要测试真机运行情况还是要打成APK在手机上运行。

     

    这边再说一下两种特殊的情况:

    1.如果是多台Android设备连接电脑的情况下,Unity会自动寻找第一台它找到的设备,而不能手动配置;

     

    2.在手机端的显示图像质量很差,可以在Unity Remote的菜单中设置Compression为PNG,Resolution为Normal,图像效果就不会有损失了,但会占用更多的带宽。

     

    出包界面:

    在我们打包工程时,就会用到以下的一个界面:

     

     

     

     

    ♦ Texture Compression

    图片纹理压缩格式,默认为ETC。

     

    ♦ Build System

    在构建Android项目时最需要了解的就是这边两种Build System的区别:

     

    1.Internal(Default)

    这是一种比较传统的构建方式。可以这么说,开发纯Android项目时,过去主流使用的Eclipse就是使用该种构建,是一种ADT的构建方式。

     

    打包一个APK经由以下几个步骤:

    a.准备并打包Unity的Assets;

    b.编译脚本;

    c.处理Plugins插件;

    d.如果Split Application Binary被勾选,会拆分资源到APK和OBB中;

    e.使用AAPT打包Android资源;

    f.将工程提供的Mantifest文件和第三方library的整合在一起;

    g.将Java代码编译成DEX;

    h.如果勾选了IL2CPP Scripting Backend,构建IL2CPP的包;

    i.优化APK和OBB包。

     

    2.Gradle(New)

    Gradle是一种最新的打包方式,Android Studio就是使用该方式进行构建。这种构建方式会对项目进行更加严格的检验,使打出来的包更加稳定,总之是比较推荐的。

     

    现在一个比较尴尬的情况是在整合第三方包时,网上大多数教程都是Eclipse时代的,而现在最好是使用Google推荐最新的Android Studio进行整合……两个IDE,虽然大家说学好一个,另一个不难……哎,出包这块Android确实比IOS耗精力的多。

     

    ♦ Export Project

    勾选该选项能导出Unity工程为Android工程,Internal(Default)是不能导出为工程的,需要Eclipse的ADT项目,就选择Build System中没有介绍的第三个选项ADT(Legacy)(感觉ADT选项和Internal是一个意思,不知道Unity为什么要这么设置)。

     

    至于Android Studio的工程,当然ADT导出的也能用,最好是选择Gradle进行导出。

     

    ♦ Development Build

    如果该选项被勾选,Unity会设置一条分析隧道并启用CheckJNI,然后下面两个选项Autoconnect Profiler和Script Debugging也能被勾选。

     

    Script Debugging应该就是Unity的日志信息了,但另一个选项不是很理解,Profiler指的是Unity的性能分析器吗?(希望有知道的大神可以留一下言)

     

    Player Settings界面:

    在上面的界面中点击player settings,那么Inspector窗口就显示该界面了。

     

    前三个选项Resolution and Presentation、Icon和Splash Image和之前介绍的PC平台的内容其实大同小异,有需要的可以参考一下之前的文章,这边就不再多说了。

     

    ♦ Other Settings Rendering

     

     

     

     

    Color Space 颜色空间,一般认为手机只支持Gamma空间,不过看了一下说是Android 4.3以上和OpenGLES3以上支持Linear了;

     

    Auto Graphics API,Unity自动选取图像API,默认选取GLES3.1,如果设备不支持,会选择GLES3或GLES2。取消勾选后,移除GLES2的选项会出现两个选项Require ES3.1和Require ES3.1+AEP,可以强制使用3.1;

     

    Multithreaded Rendering 多线程渲染,在主线程CPU利用率较高的情况下提升性能;

     

    Static Batching 静态批处理,降低Drawcall,优化性能,和下面一个选项一样必勾选;

     

    Dynamic Batching 动态批处理;

     

    GPU Skinning 启用DX11/ES3的一种蒙皮技术;

     

    Graphics Jobs(Experimental) 将图形渲染循环运行至其他CPU核心,只有Vulkan图形API才支持,实验性质的选项,可能会导致工程不稳定;

     

    Virtual Reality Supported VR支持;

     

    Protect Graphics Memory 强制图形缓冲显示经过硬件的保护路径,设备不支持则该选项无效。

     

    ♦ Other Settings Identification

     

     

     

     

    Package Name 包名,Google商城的唯一ID,IOS和Android共享该选项;

     

    Version 版本号,IOS和Android共享该选项;

     

    Bundle Version Code 内部版本号,保证每次发布新版本大于之前的数字就可以;

     

    Minimum API Level 最低API等级;

     

    Target API Level 打包API的等级。

     

    ♦ Other Settings Configuration

     

     

     

     

    Scripting Backend 脚本,IL2CPP和Mono2x,Mono2x就是C#,而IL2CPP是说将C#转成CPP,其中IL2CPP中的IL是C#编译后的中间语言;

     

    API Compatibility Level 脚本API的版本:.Net2.0和.Net2.0 Subset;

     

    Disable HW Statistics 不将硬件统计的信息发送给Unity官方,只有专业版才能勾选;

     

    Device Filter 选择应用程序在指定CPU上运行:ARMv7、x86;

     

    Install Location 指定程序安装的位置;

     

    Internet Access 网络访问权限;

     

    Write Permission sd卡写入权限;

     

    Android TV Compatibility 安卓TV兼容选项;

     

    Android Game 将应用程序标记为游戏;

     

    Android Gamepad Support Level 游戏手柄支持等级;

     

    Scripting Define Symbols 脚本编译时的标志设置;

     

    ♦ Other Settings Optimization

     

     

     

    这边的选项基本和PC端的差不多,不同的我用粗体标注了。

     

    Prebake Collision Meshes 只在build游戏时添加碰撞盒;

     

    Keep Loaded Shaders Alive 保证Shader不会被卸载;

     

    Preloader Assets 预先读取的Assets列表;

     

    Stripping Level 代码剥离等级,只有IL2CPP才能使用;

     

    Enable Internal Profiler 启用内部分析器,允许logcat获取设备分析的数据;

     

    Vertex Compression 顶点压缩,选择模型会压缩的数据,比如可以选择everything,然后去掉positions和lightmap UVs。当然每个每个模型在导入时,可以设置独立的该参数,会覆盖掉该选项;

     

    Optimize Mesh Data 优化Mesh数据,勾选该选项会移除材质所不需要的Mesh数据,例如tangents、normals、colors、UV。

     

    ♦ Publishing Settings

     

     

     

     

    Keystore 可以创建密钥库,在对接某些第三方库时需要一个密钥库,在你指定了一个密钥后,每次重启Unity后打包API都会要求输入密码;

     

    Split Application Binary 将包体分割成APK和OBB,在Google Play Store上发布100MB以上的应用程序时,需要勾选,不过我们这边连Google都上不去,所以并没有什么用。

     

    总结:

    这边介绍的主要是官方文档上提供的知识,Android和Unity对接的文章一搜一大把,当然很多是过时的。

     

    这边个人推荐的对接方式是Android Studio打包aar给Unity使用,个人原本计划打算写一篇相关的博客的,不过还是得看时间了。这边介绍另一位大神的博文:http://blog.csdn.net/zhangdi2017/article/details/63254563。大家可以参考一下。

     

    个人:

    最近买了很多软件工程的书,主要是Bob大叔的几本书还有重构、设计模式什么的。

     

    一开始看《程序员的职业素养》,想着打发一下闲暇的时间,可我看了第一章,我着迷似的阅读该书,程序在出包时也忍不住翻上几页。花了三天时间把它看完了,对里面的一些观点不能再认同。

     

    尝试了一下单元测试,花了几个小时把我之前设计的UI框架理清了,感觉也是很棒,不管修改了什么东西,只要单元测试能运行正常基本也就没什么问题。

    展开全文
  • Unity3d 集成Android 完整例子,附源码
  • Unity3dAndroid平台读写测试Demo 源码+apk 环境: Unity3d版本2018.3.5 vs2017
  • Unity3D调用Android SDK 2016-09-26 09:42:09
    1.Android开发工具和Unity开发工具要使用一致的SDK....创建Android 项目:Package Name 要与 Unity中Android 平台打包时的Bundle Identifier一致3.Android工程配置 ①导入开发包classes.jar, —->Build Path
  •  unity3d如何与android传递复杂数据,本文以图片传递为例,实现效果为,android传递给unity3d一张图片,unity3d在页面绘制出这张图片。在上篇文章(点这里),我们已经实现了unity3d读取android SD卡的文件,本...
  • unity3d发布Android程序 2014-01-07 00:16:11
    unity3d是一个跨平台的游戏开发引擎,可以使用c#开发各种平台上的游戏,如windows,Mac,Android,windows phone,IOS,Flash等。下面说下如何将开发好的unity3d游戏发布到Android手机上 1.安装unity3d 这是官网下载...
  • unity3d安卓打包教程 2019-04-18 10:51:53
    unity3d安卓打包教程
  • 在前一篇文章,我们研究了Android平台Unity3D的手势操作并在之前的基础上实现了手势旋转、放缩等功能。今天呢,我们继续来研究Unity在Android平台上扩展的内容。众所周知,Unity3D是一个强大的跨平台游戏引擎,...
  • 首先,告诉大家写这篇文章的最大感慨是,国内技术博客真的好混乱,真的是各种抄呀。而且没有经过自己的实践,我所做的项目需要使用sqlite来...Unity3D研究院之在Unity打开第三方数据库配合Android开发(三十二) 大
  • Android操作系统提供一个AssetManager类来加载这类Raw文件,在unity3d中可以直接通过unity提供的JNI封装来调用这些接口达到读取数据的目的。原理虽然非常简单,不过在实际操作过程还是有一些调用约定,unity3d的...
  • Unity3dAndroid通信 2018-06-02 23:54:03
    先交代几点 1.u3d可以直接打包成APK或android项目(项目可以在androidIDE直接运行)供android二次开发 2.android目前最新也是官方支持的方式是使用...一.Unity3d调用Android方法 先介绍一下u3d调用android...
  • unity3d在windows平台上开发Android游戏所需要的Sqlite的库文件
  • 前情提要:身为一名伟大的游戏客户端开发人员(苦逼的搬砖工人),接SDK应该是我们技能树比较基础的一个技能点,就从简单的Unity3dAndroid通讯开始伟大的航海之路吧!!准备工作:Unity(这里使用的是2017.3版本...
  • 游戏还在开发,今天我就先测试Unity3D导出并在App内测试遇到一些问题,故写一篇防坑的。 一。关于Unity3D打包 Unity3D新建一个空白项目为例左上角File->BuildSettings 导出项目 打包过程可能由于...
  • 上篇文章我们介绍了,AndroidUnity3d调用的理论基础,那么这一篇我们就开始简单的实战一下。 准备工作在编写开始,我们先做一下准备工作,这样我们就不会快完工的时候,还要等待下载Android SDK等比较费时的...
  • MAC系统下,Unity3D开发Android环境搭建 Unity3D简介 Unity3D是轻巧的跨平台的3D游戏引擎。可运行在Windows 和Mac OS X下,可发布游戏至Windows、iPhone和Android等主流平台。目前移动平台...
  • 安卓Arcore Unity3D插件 2020-05-28 23:34:25
    安卓Arcore Unity3D插件 安卓Arcore Unity3D插件 安卓Arcore Unity3D插件
  • 此篇博文解决的问题是:  1、unity3d如何访问android SD卡的文件  2、如果把android端代码以jar包形式由unity3d调用 ... 实现效果是unity3d调用android相册或相机,选择一张图片剪裁后,将图片肯绘制到unity3d中
  • Android调用Unity3D 2019-02-16 23:48:18
    1.创建Unity3D项目 2.在File点击Build settings,选择Android,点击Switch Platform 3.在 Player Settings选择other Settings,修改Package Name 4.新建两个Button和一个Text,1个用来切换到Android页面,...
  • Unity3D适配安卓时,会遇到好多奇怪的问题,这是我的遇到的两个问题,顺带附上解决办法~
1 2 3 4 5 ... 20
收藏数 19,501
精华内容 7,800