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之间切换已经没有问题了

来自:开发者社区

相关推荐