# Day 28 | Unity遊戲開發 - 介面設置及場景轉換 ###### tags: `Unity` `AR手遊` 在上一篇文章提到對話系統的管理,今天我們要來說明主畫面設定及場景資料轉換。 需要注意的是,介面的素材圖需要將背景及按鈕分別輸出喔! > **目錄** > 素材圖 > 介面設置 > 場景轉換 ## 素材圖 | 開始畫面-背景 | 關卡介面-背景| | --------| --------| | ![](https://i.imgur.com/S1u0aCB.jpg)|![](https://i.imgur.com/7klu9Nu.jpg)| | **開始畫面-按鈕** | **關卡介面-按鈕**| | ![](https://i.imgur.com/ZhmmMrh.png)| ![](https://i.imgur.com/16GRtdC.png)| ## 介面設置 ### 開始畫面 在Scene中使用Canvas加入主畫面介面,並將開始按鈕放上正確位置 ![](https://i.imgur.com/MVoT1h4.jpg) ### 關卡介面 另外開一個新場景,並將關卡介面圖放入Scene中 ![](https://i.imgur.com/99zQe9M.jpg) 將所有關卡按鈕放置正確的位置,按鈕名稱依照關卡順序取名 ![](https://i.imgur.com/h3TpoGk.jpg) ## 場景轉換 ### 場景切換 將所有需要切換的場景在File>Build Settings>Scenes In Build中加入 新增SceneManager()來管理所有場景,在SceneTrans()中使用string傳關卡名稱 ``` public void SceneSwitch(string _SceneName) { SceneManager.LoadScene(_SceneName); } ``` 在Scene按鈕中,加上場景切換功能 ![](https://i.imgur.com/1siL8TT.png) ### 關卡切換 我們的關卡希望可以完成一關,才可以解鎖下一關,因此需要設立一個變數來判斷關卡是否解鎖。 在LevelSelection()中加入bool,來判斷關卡目前狀態 ``` private bool unlocked; //預設為fasle ``` 在PressSelection()中: * 判斷bool值,來決定是否切換場景 * 因為有多個關卡需要切換,因此使用string傳關卡名稱 ``` public void PressSelection(string _LevelName) { if (unlocked) { SceneManager.LoadScene(_LevelName); } } ``` 在Scene中,為每個按鈕都加上場景切換功能 ![](https://i.imgur.com/XFaAuvT.png) 在每個遊戲關卡中加入SingleLevel()中,使用PlayerPrefs儲存關卡數值 ``` public levelIndex; public Score; public void PressedFinished() { PlayerPrefs.SetInt("Lv" + levelIndex, Score); } ``` 在LevelSelectioon()中讀取PlayerPrefs數值,更新關卡狀態 ``` private void UpdateLevelStatus() { int previousLevelNum = int.Parse(gameObject.name) -1; if(PlayerPrefs.GetInt("Lv" + PreviousLevelNum) > 0) //上一個關卡分數是否大於0 { unlocked = true; } } ``` 並在Update()中加入 ``` UpdateLevelStatus() ``` --- 如此一來便完成介面及場景切換功能嘍!下一篇將會為各位介紹我們所用到的專案管理工具,明天見!