Unity × EasyAR 实战教程-第4章:导出并安装

本章要点:

  1. 导出APK文件
  2. 增加应用的主菜单

1. 制作APK文件

1.1. 安装Android SDK和JDK并设置路径

我们在制作APK(Android安装包)之前,需要确保电脑上已经安装了Android SDK和JDK,安装Android SDK和JDK的具体方法,由于篇幅的关系就不再详细展开了。在准备好Android SDK和JDK之后,我们可以点击菜单栏上的 Unity -> Preferences... 来打开Unity Preferences菜单,然后参考下图,把相关的路径填好:

设置SDK和JDK的路径

1.2. 设置App的Icon

下图是我从网上找到的Icon,大家可以直接点击然后保存图片:

UnityChanAR的Icon,图片来自网络

然后把Icon导入Unity编辑器:

把App的Icon导入Unity

下一步,通过 Edit/Project Settings/Player 打开玩家设置,然后将我们刚刚导入项目的Icon图片设置为Default Icon即可(如果不设置图片的话,生成的APK就自动使用带有“Unity”字样的默认Icon):

设置Default Icon

1.3. 确保EasyAR正常

为了确保在编译之后,EasyAR依然可以正常使用,我们需要再次确认EasyAR官网上的Bundle ID信息(如果大家已经把Bundle ID记下来的话,这一步就可以省略了):

确认BundleID

明确了Bundle ID信息之后,我们回来继续设置PlayerSettings:

设置PlayerSettings

特别需要注意的是Graphycs API设置,务必设置为只有OpenGLES2,否则会有如下报错,提示我们EasyAR有可能无法正常工作:

没有设置好Graphycs API时的报错信息

1.4. 修改截图的保存路径

完成上述设置之后,我们需要注意啦!在上一章(在Unity中使用EasyAR开发可以和Unity酱合影的App(第三章))里,我们将相机拍摄的截图储存到了 Assets/UnityChanAR/Screenshots 路径下,设置该路径是为了在试运行时可以查看截图功能是否正常。因此,在通过测试之后,我们就应该删除该路径以及路径下的各种截图(缩小安装包的大小)。

现在,我们需要考虑手机的存储路径。在安卓系统内,我使用了以下路径:/mnt/sdcard/DCIM/,设置好路径之后可以在安卓系统的文件管理功能中去查看该文件下的内容。(至于iOS系统,我现在还没有去研究过,不知道怎样保存。以后有时间的话会研究一下。)

1.5. 执行编译

通过 File/BuildingSettings... 就可以来到编译之前的最后一个设置页面了:

BuildingSettings...

完成截图中的操作之后,Unity编辑器就会自动编译并制作APK文件。我们把做好的APK文件直接导入手机之后就可以安装了。

2. 增加App的主菜单界面

2.1. 新建场景(用作主菜单)

主菜单页面并非这个App所必需的,但是,如果我们增加一个菜单界面,那么,这个App看起来就会更加符合人们的使用习惯。在Unity中,我们可以通过新增一个场景,来实现主菜单的功能。新建Scene的方法是:

  1. 打开Project面板中的Assets/UnityChanAR/Scenes/文件夹
  2. 在空白处点击鼠标右键,会出现一个右键菜单
  3. 选择Create/Scene,然后将新建的Scene命名为“00”
Project面板

然后,我们需要打开这个场景(Scene 00),方法是:直接把“Scene 00”拖拽到Hierarchy面板中。这时,Scene视图中会同时显示Scene00和Scene01,两个Scene重叠在一起。我们现在只需要编辑Scene00,所以,用鼠标右键点击Scene01,选择UnloadScene:

右键点击01,选择UnloadScene

2.2. 设置主菜单的背景图片

我们新建的Scene00只需要显示主菜单,所以,在场景中只要添加UGUI系统即可。在之前章节中,我们已经收集了一些按钮的图片;所以,我们现在需要找一张合适的背景图片。这张图片最好是可以匹配手机的分辨率,我们可以通过一些软件修改图片,我在这里就走个捷径,直接下载了一个小米手机屏幕背景图片。将我们准备好的图片导入Unity之后,需要注意把图片的TextureType设置为Sprite(2D and UI):

导入图片并设置TextureType

然后,我们在场景中加入一个Image,并切换到Game视图:

添加Button,切换至Game视图

在Game视图中我们可以看到,主菜单的背景还没有设置,而且Image的位置和大小也不太合适。接下来,我们首先给主菜单添加背景图片。在这里大家需要注意Canvas是怎样接收一张图片的:

  1. 在Hierarchy面板里选中Canvas
  2. 在Inspector面板中添加组件:UI -> Image
  3. 将背景图片直接拖拽到Image组件SourceImage的空白槽里
给Canvas添加一张图片

2.3. 在主菜单中添加按钮

我们按照第二章里介绍的方法,把Image设置为一个按钮即可。注意以下三个要点:

  1. 将Image对象重命名为Photo,以方便管理
  2. 在Rect Transform中设置Photo按钮的大小和位置
  3. 给Photo按钮添加图片,以及Button组件(UI -> Button)

完成之后的效果图是这样的:

完成设置后的效果图

2.4. 添加场景控制器和控制代码

在切换场景的时候,我们首先需要在场景中添加一个控制器。控制器是由一个空的GameObject和一个脚本组成的。所以,完成一个场景控制器需要:

  1. 新建SceneChanger脚本并参考以下代码编辑
  2. 在场景中添加空的GameObject,重命名为”SceneChanger“
  3. 把SceneChanger脚本添加到SceneChanger对象身上
using UnityEngine;
using System.Collections;
// 注意,不要忘记使用SceneManagement
using UnityEngine.SceneManagement;

public class SceneChanger : MonoBehaviour {

    // 这是对应按钮Photo的函数
    public void OnBtnPhoto () {
        SceneManager.LoadScene ("01");
    }

    // 这是对应按钮Menu的函数
    // 按钮Menu会放在Scene01中,稍后会有详细说明
    public void OnBtnMenu () {
        SceneManager.LoadScene ("00");
    }
}
场景控制器SceneChanger

2.5. 对代码的简单解析

上面的代码中,最重要的就是SceneManager.LoadScene ()函数。这里引用一下官方文档中的一部分说明来帮助我们理解:

Loads the scene by its name or index in Build Settings.
根据场景名称或者场景在Build Settings中的编号来加载某个场景。

The given sceneName can either be the last part of the path, without .unity extension or the full path still without the .unity extension.
在指定场景名称时,既可以使用(场景所在)路径的最后一部分(不加.unity扩展名),也可以使用(场景所在)全路径(不加.unity扩展名)。

The path has to be exactly as shown in the Build Settings Window.
(场景所在)路径必须和Build Settings Window中的显示的路径完全一致。

If only the scene name is given this will load the first scene in the list that matches.
如果(我们)只给出场景的名称(而非全部路径),那么(Unity编辑器)会加载它匹配到的第一个场景。

If you have multiple scenes with same name but different paths, you should use the full path.
如果你有一个重名的场景,分别保存在不同的路径下,那你就应该使用全部路径。

中文是我自己翻译的,官方文档目前只有英文。重点是我们必须理解上文中提到的Build Settings Window,以及(场景所在)路径场景编号。为了便于理解,我们可以看下面这张图:

Build Settings Window

左边箭头指示的就是(场景所在)路径,右边箭头是场景编号。我们现在的项目里只有两个不重名的场景——00和01,所以,我们可以在加载路径时只给出场景名,而不用写出全部路径。

2.6. 将按钮与代码联系起来

接下来,我们需要把之前设置好的Photo按钮和场景控制器联系起来,具体方法依然在第二章里可以找到,这里只罗列三个要点:

  1. 选中Photo对象,在Inspector中找到Button组件
  2. 在Button组件的On Click ()选项中,追加新的操作
  3. 设置新的操作:SceneChanger中的OnBtnPhoto()函数

完成上述操作之后的界面应该是这样的:

设置Photo按钮

2.7. 修改场景01

现在,创建主菜单的工作就已经完成了!之后,我们需要修改一下Scene01,在场景01中添加一个返回主菜单的按钮。结合本章所讲的内容,这里的操作就不难了,大家可以对照下面的要点和图片试一试:

  1. 在Hierarchy面板中加载场景01,并Unload场景00
  2. 在场景中添加一个大小与位置都合适的按钮(叫做Menu)
  3. 添加场景控制器,并将其与Menu按钮关联起来
操作要点示意图

在完成了场景01中的修改之后,我们就可以测试一下今天的效果了。在测试之前一定记得:把Hierarchy面板中所有的场景都加载进来。下面是我自己的试效果图:

增加主菜单之后的App效果图

第四章就到这里,下一章我们继续给这个App添加新的功能!

其他章节:

  1. Unity × EasyAR 实战教程-第1章:前言和准备
  2. Unity × EasyAR 实战教程-第2章:UGUI入门
  3. Unity × EasyAR 实战教程-第3章:LeanTouch入门
  4. Unity × EasyAR 实战教程-第4章:导出并安装
  5. Unity × EasyAR 实战教程-第5章:使用ImageTarget和“脱卡”
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,298评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,701评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 107,078评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,687评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,018评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,410评论 1 211
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,729评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,412评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,124评论 1 239
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,379评论 2 242
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,903评论 1 257
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,268评论 2 251
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,894评论 3 233
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,014评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,770评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,435评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,312评论 2 260

推荐阅读更多精彩内容