Unity × EasyAR 實戰(zhàn)教程-第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信息之后,我們回來繼續(xù)設置PlayerSettings:

設置PlayerSettings

特別需要注意的是Graphycs API設置,務必設置為只有OpenGLES2,否則會有如下報錯,提示我們EasyAR有可能無法正常工作:

沒有設置好Graphycs API時的報錯信息

1.4. 修改截圖的保存路徑

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

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

1.5. 執(zhí)行編譯

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

BuildingSettings...

完成截圖中的操作之后,Unity編輯器就會自動編譯并制作APK文件。我們把做好的APK文件直接導入手機之后就可以安裝了。

2. 增加App的主菜單界面

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

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

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

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

右鍵點擊01,選擇UnloadScene

2.2. 設置主菜單的背景圖片

我們新建的Scene00只需要顯示主菜單,所以,在場景中只要添加UGUI系統(tǒng)即可。在之前章節(jié)中,我們已經收集了一些按鈕的圖片;所以,我們現(xiàn)在需要找一張合適的背景圖片。這張圖片最好是可以匹配手機的分辨率,我們可以通過一些軟件修改圖片,我在這里就走個捷徑,直接下載了一個小米手機屏幕背景圖片。將我們準備好的圖片導入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的函數(shù)
    public void OnBtnPhoto () {
        SceneManager.LoadScene ("01");
    }

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

2.5. 對代碼的簡單解析

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

Loads the scene by its name or index in Build Settings.
根據(jù)場景名稱或者場景在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

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

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

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

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

完成上述操作之后的界面應該是這樣的:

設置Photo按鈕

2.7. 修改場景01

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

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

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

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

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

其他章節(jié):

  1. Unity × EasyAR 實戰(zhàn)教程-第1章:前言和準備
  2. Unity × EasyAR 實戰(zhàn)教程-第2章:UGUI入門
  3. Unity × EasyAR 實戰(zhàn)教程-第3章:LeanTouch入門
  4. Unity × EasyAR 實戰(zhàn)教程-第4章:導出并安裝
  5. Unity × EasyAR 實戰(zhàn)教程-第5章:使用ImageTarget和“脫卡”
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容