首先创建两个场景: One,Two
再创建一个空游戏对象: GameObject,并添加AudioSource组件,把要播放的音乐拖放进去
给GameObject添加脚本AlwayAudio,代码如下:
using UnityEngine;
using System.Collections; public class AlwayAudio : MonoBehaviour { void Start () {
DontDestroyOnLoad(this.gameObject);
}
}
保持GameObject不被销毁的代码
再来创建一个脚本AlwayAudio2,用于切换场景,此脚本放到摄像机即可:
代码如下:
if (GUI.Button(new Rect(,,,),"load level")) {
if (Application.loadedLevelName=="One") {
Application.LoadLevel("Two");
}
else {
Application.LoadLevel("One");
}
}
切换场景代码
到这里已经可以从One到Two切换时没有问题,但是切换回来的时候会出现两个声音,一个是One重新生成的,另一个是没有被销毁的,为了解决这个问题我们把GameObject设置成预设,并添加个标签(tag):sound, 修改第二个脚本 , 添加如下代码 :
public GameObject obje;
GameObject obj=null; void Start () {
obj = GameObject.FindGameObjectWithTag("sound");
if (obj==null) {
obj = (GameObject)Instantiate(obje);
}
}
修改第二个脚本的代码
这个时候,把预设拖放给obje,把场景中的GameObject删掉
这样在场景One和Two之间切换已经没有问题了
来自:开发者社区