在场景切换的过程中,我们希望场景中的背景音乐继续播放而不是从新播放,这时我们要通过DontDestroyOnLoad(this.gameObject)函数来实现这样的功能;
首先我们新建两个场景,将场景的名字分别命名为“001”和“002”,为了区分这两个场景,分别在里面建几个立方体已进行区分。建立一个空物体,在上面加上AudioSouce组建并添加背景音乐。
创建一个脚本名为AudioManager的脚本,
public class AudioManager: MonoBehaviour {
void Start()
{
DontDestroyOnLoad(this.gameObject);
}
}
然后将这个脚本挂在空物体,制作为预知物体。
(二):创建第二个脚本Test
public class Test: MonoBehaviour
{
public GameObject objPrefabInstantSource;//音乐预知物体
private GameObject musicInstant = null;//场景中是否有这个物体
// Use this for initialization
void Start()
{
musicInstant = GameObject.FindGameObjectWithTag("sounds");
if (musicInstant == null)
{
musicInstant = (GameObject)Instantiate(objPrefabInstantSource);
}
}
void OnGUI()
{
if (GUILayout.Button("Load Level"))
{
if (Application.loadedLevelName == "001")//关于这个下面有详细介绍
{
Application.LoadLevel("002");
}
else
{
Application.LoadLevel("001");
}
}
}
}
这个脚本是先通过标签来查找场景中是否有这个预知物体,如果没有就创建一个。将这个脚本挂在两个场景的相机上,这样就可以在场景中分别切换了。