iT邦幫忙

2021 iThome 鐵人賽

DAY 20
0
自我挑戰組

用unity製作2DRPG雛形-沒有大野狼的小紅帽系列 第 20

20.unity換場景

今天要蓋出阿嬤家!讓小紅帽走進阿嬤家,找到阿嬤。

1.新建場景

右鍵 > Create > Scene
1.png

2.png

這樣就建好一個新的場景

2.切換場景

利用碰撞"門"進入場景二。

if (coll.gameObject.tag == "door")
        {
            Debug.Log("切換場景");
            SceneManager.LoadScene(1,LoadSceneMode.Single);
        }

換場景的兩種寫法

第一種(過時)
Application.LoadLevel(1); 
//數字為場景編號,從File -> Build Settings...看
//可以在Build Settings中隨意交換場景順序,因此要留意是否正確
Application.LoadLevel("場景名稱");
//直接輸入場景名稱進行換場景

第二種
//先新增命名空間
UnityEngine.SceneManagement;
//寫法和第一種一樣
 SceneManager.LoadScene(1,LoadSceneMode.Single);
 SceneManager.LoadScene(1,加載場景模式.單一);

3.數據傳遞(物件不滅)

在不要刪除的物件上掛之前寫過的 DontDestroyOnLoad(gameObject);

這樣就可以同一支角色在場景間穿梭,角色不會消失和重新載入。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class DontDestroy : MonoBehaviour
{
    // Start is called before the first frame update
void Awake()
    {
		//用陣列取得所有tag"role"物件,希望只有objs[0]一項,objs.Length=1
        GameObject[] objs = GameObject.FindGameObjectsWithTag("role");
				
				//如果陣列不只一項(第二次加載時重複新增該物件)
        if (objs.Length > 1)
        {
						//就刪除該次加載場景建立物件
                        
            Destroy(this.gameObject);
        }

				//如果陣列只有一項,就不要刪掉這個物件(首次加載)
        Debug.Log("DontDestroyOnLoad(this.gameObject);");
        Debug.Log(this.gameObject);
        DontDestroyOnLoad(this.gameObject);
    }
}

上一篇
19.unity實例化(下)(Random、迴圈、Prefab)
下一篇
21.unity簡易對話介面設計概念
系列文
用unity製作2DRPG雛形-沒有大野狼的小紅帽30

尚未有邦友留言

立即登入留言