在我的游戏中,我有两个场景。 我想要实现的是,如果用户从一个场景导航到另一个场景,应该从开始播放特定于每个场景的背景音频(音频长度= 0)
但我所有的努力都是徒劳的。
我尝试使用audioSound的'Pause'方法 我试过了 创建一个新的游戏对象并将此场景背景分数分配给它并进行播放 如果有任何
,则销毁为另一个场景创建的gameObject但它没有给出我想要的结果。
我搜索了如何从开始播放audioClip并停止其他audioClip播放,但没有找到任何。
我知道我不应该要求堆栈溢出代码,但是如果有人已经实现了这个或者有一些伪代码请求你提供它
答案 0 :(得分:0)
我不确定我是否理解你的问题,因为它似乎是最简单的背景音乐场景。
如果你真的想要在每个场景中更改音频片段,让我们说场景A必须播放片段A,场景B必须播放片段B,并且一旦场景加载就应该播放两个片段,你只需要创建具有音频源组件的两个场景中的游戏对象,其中Play On Awake标志处于活动状态,然后仅为场景分配适当的剪辑(即:在场景A游戏的音频源组件的音频剪辑字段中指定剪辑A)对象,并对场景B的剪辑B执行相同操作。)
这就是它。
答案 1 :(得分:0)
如果您查看详细代码,则可以尝试此代码。
首先:创建一个脚本“SoundFxScript.cs” //您可以根据需要进行修改
插入此代码:
public class SoundFxScript : MonoBehaviour {
//Background Music
public AudioSource Scene1_Sound;
public AudioSource Scene2_Sound;
// Use this for initialization
void Start () {
PlayBackgroundMusic ();
}
// Update is called once per frame
void Update () {
}
public void PlayBackgroundMusic() {
if (UnityEngine.SceneManagement.SceneManager.GetActiveScene ().name == "Scene1") {
Scene1_SoundPlay();
} else if (UnityEngine.SceneManagement.SceneManager.GetActiveScene ().name == "Scene2") {
Scene2_SoundPlay();
}
}
public void Scene1_SoundPlay() {
Scene1_Sound.Play ();
Scene2_Sound.Stop ();
}
public void Scene2_SoundPlay() {
Scene1_Sound.Stop ();
Scene2_Sound.Play ();
}
// Step Fifth
public void LoadTheScene (string Scenename) {
UnityEngine.SceneManagement.SceneManager.LoadScene (Scenename);
sf.PlayBackgroundMusic ();
}
}
第二:在第一个场景制作Gameobject name = “SoundMusic”,并添加组件脚本 SoundFxScript.cs 。在gameobject “SoundMusic”中,您可以为scene1和scene2添加背景音乐。
第三:制作单件文件 Singleton.cs
插入此代码:
public class Singleton : MonoBehaviour {
static Singleton instance = null;
void Start ()
{
if (instance != null)
{
Destroy(gameObject);
return;
}
DontDestroyOnLoad(gameObject);
instance = this;
}
}
第四:在gameobject “SoundMusic”添加组件脚本“Singleton.cs”
第五:如何在另一个场景中调用(加载场景)。此方法位于 SoundFxScript.cs
中示例您有一个方法来调用加载场景。试试这个方法:
用以下方法调用: LoadTheScene(“Scene2”) //调用scene2
在这里,您可以从任何脚本中调用 SoundFxscript.cs 组件。
示例:
SoundFxScript sf;
sf = GameObject.Find ("SoundMusic").GetComponent<SoundFxScript> ();
您可以使用 LoadTheScene 方法加载新场景,背景音乐将根据场景再次重新播放。
这就是全部。