首先創建兩個場景: One,Two
再創建一個空游戲對象: GameObject,並添加AudioSource組件,把要播放的音樂拖放進去
給GameObject添加腳本AlwayAudio,代碼如下:
1 using UnityEngine; 2 using System.Collections; 3 4 public class AlwayAudio : MonoBehaviour { 5 6 void Start () { 7 DontDestroyOnLoad(this.gameObject); 8 } 9 }
再來創建一個腳本AlwayAudio2,用於切換場景,此腳本放到攝像機即可:
代碼如下:
1 if (GUI.Button(new Rect(10,10,120,30),"load level")) { 2 if (Application.loadedLevelName=="One") { 3 Application.LoadLevel("Two"); 4 } 5 else { 6 Application.LoadLevel("One"); 7 } 8 }
到這里已經可以從One到Two切換時沒有問題,但是切換回來的時候會出現兩個聲音,一個是One重新生成的,另一個是沒有被銷毀的,為了解決這個問題我們把GameObject設置成預設,並添加個標簽(tag):sound, 修改第二個腳本 , 添加如下代碼 :
1 public GameObject obje; 2 GameObject obj=null; 3 4 void Start () { 5 obj = GameObject.FindGameObjectWithTag("sound"); 6 if (obj==null) { 7 obj = (GameObject)Instantiate(obje); 8 } 9 }
這個時候,把預設拖放給obje,把場景中的GameObject刪掉
這樣在場景One和Two之間切換已經沒有問題了
來自:開發者社區
