Unity × EasyAR 實(shí)戰(zhàn)教程-第4章:導(dǎo)出并安裝

本章要點(diǎn):

  1. 導(dǎo)出APK文件
  2. 增加應(yīng)用的主菜單

1. 制作APK文件

1.1. 安裝Android SDK和JDK并設(shè)置路徑

我們?cè)谥谱鰽PK(Android安裝包)之前,需要確保電腦上已經(jīng)安裝了Android SDK和JDK,安裝Android SDK和JDK的具體方法,由于篇幅的關(guān)系就不再詳細(xì)展開了。在準(zhǔn)備好Android SDK和JDK之后,我們可以點(diǎn)擊菜單欄上的 Unity -> Preferences... 來打開Unity Preferences菜單,然后參考下圖,把相關(guān)的路徑填好:

設(shè)置SDK和JDK的路徑

1.2. 設(shè)置App的Icon

下圖是我從網(wǎng)上找到的Icon,大家可以直接點(diǎn)擊然后保存圖片:

UnityChanAR的Icon,圖片來自網(wǎng)絡(luò)

然后把Icon導(dǎo)入U(xiǎn)nity編輯器:

把App的Icon導(dǎo)入U(xiǎn)nity

下一步,通過 Edit/Project Settings/Player 打開玩家設(shè)置,然后將我們剛剛導(dǎo)入項(xiàng)目的Icon圖片設(shè)置為Default Icon即可(如果不設(shè)置圖片的話,生成的APK就自動(dòng)使用帶有“Unity”字樣的默認(rèn)Icon):

設(shè)置Default Icon

1.3. 確保EasyAR正常

為了確保在編譯之后,EasyAR依然可以正常使用,我們需要再次確認(rèn)EasyAR官網(wǎng)上的Bundle ID信息(如果大家已經(jīng)把Bundle ID記下來的話,這一步就可以省略了):

確認(rèn)BundleID

明確了Bundle ID信息之后,我們回來繼續(xù)設(shè)置PlayerSettings:

設(shè)置PlayerSettings

特別需要注意的是Graphycs API設(shè)置,務(wù)必設(shè)置為只有OpenGLES2,否則會(huì)有如下報(bào)錯(cuò),提示我們EasyAR有可能無法正常工作:

沒有設(shè)置好Graphycs API時(shí)的報(bào)錯(cuò)信息

1.4. 修改截圖的保存路徑

完成上述設(shè)置之后,我們需要注意啦!在上一章(在Unity中使用EasyAR開發(fā)可以和Unity醬合影的App(第三章))里,我們將相機(jī)拍攝的截圖儲(chǔ)存到了 Assets/UnityChanAR/Screenshots 路徑下,設(shè)置該路徑是為了在試運(yùn)行時(shí)可以查看截圖功能是否正常。因此,在通過測(cè)試之后,我們就應(yīng)該刪除該路徑以及路徑下的各種截圖(縮小安裝包的大小)。

現(xiàn)在,我們需要考慮手機(jī)的存儲(chǔ)路徑。在安卓系統(tǒng)內(nèi),我使用了以下路徑:/mnt/sdcard/DCIM/,設(shè)置好路徑之后可以在安卓系統(tǒng)的文件管理功能中去查看該文件下的內(nèi)容。(至于iOS系統(tǒng),我現(xiàn)在還沒有去研究過,不知道怎樣保存。以后有時(shí)間的話會(huì)研究一下。)

1.5. 執(zhí)行編譯

通過 File/BuildingSettings... 就可以來到編譯之前的最后一個(gè)設(shè)置頁面了:

BuildingSettings...

完成截圖中的操作之后,Unity編輯器就會(huì)自動(dòng)編譯并制作APK文件。我們把做好的APK文件直接導(dǎo)入手機(jī)之后就可以安裝了。

2. 增加App的主菜單界面

2.1. 新建場(chǎng)景(用作主菜單)

主菜單頁面并非這個(gè)App所必需的,但是,如果我們?cè)黾右粋€(gè)菜單界面,那么,這個(gè)App看起來就會(huì)更加符合人們的使用習(xí)慣。在Unity中,我們可以通過新增一個(gè)場(chǎng)景,來實(shí)現(xiàn)主菜單的功能。新建Scene的方法是:

  1. 打開Project面板中的Assets/UnityChanAR/Scenes/文件夾
  2. 在空白處點(diǎn)擊鼠標(biāo)右鍵,會(huì)出現(xiàn)一個(gè)右鍵菜單
  3. 選擇Create/Scene,然后將新建的Scene命名為“00”
Project面板

然后,我們需要打開這個(gè)場(chǎng)景(Scene 00),方法是:直接把“Scene 00”拖拽到Hierarchy面板中。這時(shí),Scene視圖中會(huì)同時(shí)顯示Scene00和Scene01,兩個(gè)Scene重疊在一起。我們現(xiàn)在只需要編輯Scene00,所以,用鼠標(biāo)右鍵點(diǎn)擊Scene01,選擇UnloadScene:

右鍵點(diǎn)擊01,選擇UnloadScene

2.2. 設(shè)置主菜單的背景圖片

我們新建的Scene00只需要顯示主菜單,所以,在場(chǎng)景中只要添加UGUI系統(tǒng)即可。在之前章節(jié)中,我們已經(jīng)收集了一些按鈕的圖片;所以,我們現(xiàn)在需要找一張合適的背景圖片。這張圖片最好是可以匹配手機(jī)的分辨率,我們可以通過一些軟件修改圖片,我在這里就走個(gè)捷徑,直接下載了一個(gè)小米手機(jī)屏幕背景圖片。將我們準(zhǔn)備好的圖片導(dǎo)入U(xiǎn)nity之后,需要注意把圖片的TextureType設(shè)置為Sprite(2D and UI):

導(dǎo)入圖片并設(shè)置TextureType

然后,我們?cè)趫?chǎng)景中加入一個(gè)Image,并切換到Game視圖:

添加Button,切換至Game視圖

在Game視圖中我們可以看到,主菜單的背景還沒有設(shè)置,而且Image的位置和大小也不太合適。接下來,我們首先給主菜單添加背景圖片。在這里大家需要注意Canvas是怎樣接收一張圖片的:

  1. 在Hierarchy面板里選中Canvas
  2. 在Inspector面板中添加組件:UI -> Image
  3. 將背景圖片直接拖拽到Image組件SourceImage的空白槽里
給Canvas添加一張圖片

2.3. 在主菜單中添加按鈕

我們按照第二章里介紹的方法,把Image設(shè)置為一個(gè)按鈕即可。注意以下三個(gè)要點(diǎn):

  1. 將Image對(duì)象重命名為Photo,以方便管理
  2. 在Rect Transform中設(shè)置Photo按鈕的大小和位置
  3. 給Photo按鈕添加圖片,以及Button組件(UI -> Button)

完成之后的效果圖是這樣的:

完成設(shè)置后的效果圖

2.4. 添加場(chǎng)景控制器和控制代碼

在切換場(chǎng)景的時(shí)候,我們首先需要在場(chǎng)景中添加一個(gè)控制器。控制器是由一個(gè)空的GameObject和一個(gè)腳本組成的。所以,完成一個(gè)場(chǎng)景控制器需要:

  1. 新建SceneChanger腳本并參考以下代碼編輯
  2. 在場(chǎng)景中添加空的GameObject,重命名為”SceneChanger“
  3. 把SceneChanger腳本添加到SceneChanger對(duì)象身上
using UnityEngine;
using System.Collections;
// 注意,不要忘記使用SceneManagement
using UnityEngine.SceneManagement;

public class SceneChanger : MonoBehaviour {

    // 這是對(duì)應(yīng)按鈕Photo的函數(shù)
    public void OnBtnPhoto () {
        SceneManager.LoadScene ("01");
    }

    // 這是對(duì)應(yīng)按鈕Menu的函數(shù)
    // 按鈕Menu會(huì)放在Scene01中,稍后會(huì)有詳細(xì)說明
    public void OnBtnMenu () {
        SceneManager.LoadScene ("00");
    }
}
場(chǎng)景控制器SceneChanger

2.5. 對(duì)代碼的簡(jiǎn)單解析

上面的代碼中,最重要的就是SceneManager.LoadScene ()函數(shù)。這里引用一下官方文檔中的一部分說明來幫助我們理解:

Loads the scene by its name or index in Build Settings.
根據(jù)場(chǎng)景名稱或者場(chǎng)景在Build Settings中的編號(hào)來加載某個(gè)場(chǎng)景。

The given sceneName can either be the last part of the path, without .unity extension or the full path still without the .unity extension.
在指定場(chǎng)景名稱時(shí),既可以使用(場(chǎng)景所在)路徑的最后一部分(不加.unity擴(kuò)展名),也可以使用(場(chǎng)景所在)全路徑(不加.unity擴(kuò)展名)。

The path has to be exactly as shown in the Build Settings Window.
(場(chǎng)景所在)路徑必須和Build Settings Window中的顯示的路徑完全一致。

If only the scene name is given this will load the first scene in the list that matches.
如果(我們)只給出場(chǎng)景的名稱(而非全部路徑),那么(Unity編輯器)會(huì)加載它匹配到的第一個(gè)場(chǎng)景。

If you have multiple scenes with same name but different paths, you should use the full path.
如果你有一個(gè)重名的場(chǎng)景,分別保存在不同的路徑下,那你就應(yīng)該使用全部路徑。

中文是我自己翻譯的,官方文檔目前只有英文。重點(diǎn)是我們必須理解上文中提到的Build Settings Window,以及(場(chǎng)景所在)路徑場(chǎng)景編號(hào)。為了便于理解,我們可以看下面這張圖:

Build Settings Window

左邊箭頭指示的就是(場(chǎng)景所在)路徑,右邊箭頭是場(chǎng)景編號(hào)。我們現(xiàn)在的項(xiàng)目里只有兩個(gè)不重名的場(chǎng)景——00和01,所以,我們可以在加載路徑時(shí)只給出場(chǎng)景名,而不用寫出全部路徑。

2.6. 將按鈕與代碼聯(lián)系起來

接下來,我們需要把之前設(shè)置好的Photo按鈕和場(chǎng)景控制器聯(lián)系起來,具體方法依然在第二章里可以找到,這里只羅列三個(gè)要點(diǎn):

  1. 選中Photo對(duì)象,在Inspector中找到Button組件
  2. 在Button組件的On Click ()選項(xiàng)中,追加新的操作
  3. 設(shè)置新的操作:SceneChanger中的OnBtnPhoto()函數(shù)

完成上述操作之后的界面應(yīng)該是這樣的:

設(shè)置Photo按鈕

2.7. 修改場(chǎng)景01

現(xiàn)在,創(chuàng)建主菜單的工作就已經(jīng)完成了!之后,我們需要修改一下Scene01,在場(chǎng)景01中添加一個(gè)返回主菜單的按鈕。結(jié)合本章所講的內(nèi)容,這里的操作就不難了,大家可以對(duì)照下面的要點(diǎn)和圖片試一試:

  1. 在Hierarchy面板中加載場(chǎng)景01,并Unload場(chǎng)景00
  2. 在場(chǎng)景中添加一個(gè)大小與位置都合適的按鈕(叫做Menu)
  3. 添加場(chǎng)景控制器,并將其與Menu按鈕關(guān)聯(lián)起來
操作要點(diǎn)示意圖

在完成了場(chǎng)景01中的修改之后,我們就可以測(cè)試一下今天的效果了。在測(cè)試之前一定記得:把Hierarchy面板中所有的場(chǎng)景都加載進(jìn)來。下面是我自己的試效果圖:

增加主菜單之后的App效果圖

第四章就到這里,下一章我們繼續(xù)給這個(gè)App添加新的功能!

其他章節(jié):

  1. Unity × EasyAR 實(shí)戰(zhàn)教程-第1章:前言和準(zhǔn)備
  2. Unity × EasyAR 實(shí)戰(zhàn)教程-第2章:UGUI入門
  3. Unity × EasyAR 實(shí)戰(zhàn)教程-第3章:LeanTouch入門
  4. Unity × EasyAR 實(shí)戰(zhàn)教程-第4章:導(dǎo)出并安裝
  5. Unity × EasyAR 實(shí)戰(zhàn)教程-第5章:使用ImageTarget和“脫卡”
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,431評(píng)論 6 544
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,637評(píng)論 3 429
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,555評(píng)論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,900評(píng)論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,629評(píng)論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,976評(píng)論 1 328
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,976評(píng)論 3 448
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,139評(píng)論 0 290
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,686評(píng)論 1 336
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,411評(píng)論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,641評(píng)論 1 374
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,129評(píng)論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,820評(píng)論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,233評(píng)論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,567評(píng)論 1 295
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 52,362評(píng)論 3 400
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,604評(píng)論 2 380

推薦閱讀更多精彩內(nèi)容