Unity:Survival Shooter教程:如何在两首背景歌曲之间切换

时间:2016-05-22 19:15:17

标签: c# unity3d unity5

我正在乱搞Unity进行任务,我创造了一个"伤害链",如果我的伤害足够快,那么伤害链就会增加。

然后,当损坏链变得足够高时,我想从背景音乐切换到"输入Sandman"通过Metallica ......

但是当我添加"输入Sandman" MP3到层次结构中的背景音乐对象,我必须添加第二个"音频源",具有相同的名称(即音频源)。

然后,当我尝试在代码中管理它时,我无法像其他任何地方一样运行GetComponent<AudioClip>

如何在脚本中切换两首歌曲?这是我的对象设置的图片,然后是代码...

enter image description here

而且,我的代码(实际上是),SongManager:

using UnityEngine;
using System.Collections;

public class SongManager : MonoBehaviour {
    AudioSource regular_music;
    AudioSource high_dmg_music;
    // Use this for initialization
    void Start () {
        regular_music = GetComponent<AudioSource> ();
        high_dmg_music = GetComponent<AudioSource> ();

        regular_music.loop = true;
        regular_music.Play ();

        high_dmg_music.loop = false;
        high_dmg_music.Stop ();
    }

    // Update is called once per frame
    void Update () {
        if (DamageManager.dmg_chain > 1500) {
            regular_music.loop = false;
            high_dmg_music.loop = true;
            high_dmg_music.Play ();
        } else {
            if (high_dmg_music.isPlaying) {
                high_dmg_music.loop = false;
                high_dmg_music.Stop ();
                regular_music.loop = true;
                regular_music.Play ();
            }
        }

    }
}

显然,代码不起作用,但无论如何我都完成了。

我如何实施此配置?

2 个答案:

答案 0 :(得分:2)

只创建一个AudioSource。创建多个AudioClips,然后将要播放的每个AudioClip重新分配给AudioSource。将声音拖动到AudioClip个插槽。

public AudioClip background_music;
public AudioClip sandman_music;

private AudioSource audioSource;

Void Start()
{
    audioSource = GetComponent<AudioSource>();

    //To play backround sound
    if (audioSource.isPlaying)
    {
            audioSource.Stop();
    }
    audioSource.clip = background_music;
    audioSource.Play();

    //To play sandman sound
    if (audioSource.isPlaying)
    {
    audioSource.Stop();
    }
    audioSource.clip = sandman_music;
    audioSource.Play();
}

答案 1 :(得分:1)

您需要更改音频源上的剪辑。 http://docs.unity3d.com/ScriptReference/AudioSource.html

您可能希望这样做(因此您可以在检查员中设置音乐):

    public AudioClip regular_music;
    public AudioClip high_dmg_music;

然后只需将AudioSource的剪辑设置为其中一个。