首先创建两个场景: 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之间切换已经没有问题了
来自:开发者社区