unity3d切換場景時,背景音樂保持播放


首先創建兩個場景: 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 }
保持GameObject不被銷毀的代碼

再來創建一個腳本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之間切換已經沒有問題了

 

來自:開發者社區


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM