前往
大廳
主題

unity學習筆記#3 使用SceneManager.LoadScene更換場景

弒羽 | 2021-08-22 20:41:56 | 巴幣 16 | 人氣 5535

在製作過程中,可能會有多個不同的Scene,像是主畫面、關卡1、關卡2等等
這時就可以使用SceneManager.LoadScene來進行scene的更換

假設我現在有了開始場景與四個關卡場景,我需要使用按鈕來進行場景切換

要使用SceneManager的話,最上方要先引入UnityEngine.SceneManagement名稱空間

然後需要先將場景新增到Build Settings

選取場景後拖曳到Scenes in Build的區域內

這時就可以看到場景已被新增進去

讀取的方法有兩個,一個是使用場景名稱,另一個是使用場景的index
先來看使用場景名稱的方式

這邊先寫了一個讀取特定名稱的方法

然後在場景裡面新增一個button,點擊後觸發這個方法

點擊後就會把場景跳轉到我所設定的Level_1這個場景

這邊要注意的是,因為讀取的方式是使用名稱,所以如果修改了場景名稱,方法內的名稱也需要修改

接著來看使用Index的方式
在上面將場景加入Build Settings的圖中可以看到,右邊有一個從0開始的數字
這個數字就是場景的Index,我們可以藉由這個Index來決定要讀取到哪個場景

這邊一樣使用方法來從Main場景來轉換到Level_1場景

點選按鈕後就可以轉換場景,這部分就不再貼一次示意圖
這時問題就來了,如果我想去到場景3 4 5,不可能每個場景都寫一個方法來使用
這時就有個比較簡單的方式可以使用一個方法去一直往後讀取下去

一樣使用Index的方式,但對方法的邏輯進行一點簡單的修改

這邊使用了(SceneManager.GetActiveScene().buildIndex來找出當前這個場景的Index
然後讀取時使用當前場景+1,就可以順利的使用一個方法一直往後順著讀取下去了
假設到了失敗或者全破後是否重來的按鈕,就可以再去使用名稱的方式來設定回到Main的方法

以上就是這次的內容
感謝收看

創作回應

鮭魚超好吃
不好意思,想請教一下,我設置關卡重來的按鈕後,是有回到一開始的關卡,但是玩家再碰到怪物時變得無法扣血.....請問該怎麼辦呢?
2021-11-12 01:15:19
鮭魚超好吃
謝謝您><
2021-11-12 01:15:27
弒羽
資訊量有點少所以不太確定你遇到的情況跟怎麼解,可能要請你貼一下code,目前想到可能有關連的問題是讀取場景的時候,會將場景內的東西重新加載,舊的會被刪除,如果有想要留到下個場景的東西就要額外做處理
2021-11-12 21:57:23

更多創作