Unity: Survival Shooter 教程:如何在两首背景歌曲之间切换
Unity: Survival Shooter Tutorial: How to switch between two background songs
我正在与 Unity 打交道,我创建了一个 "Damage Chain",如果我足够快地造成伤害,伤害链就会增加。
然后,当伤害链足够高时,我想从背景音乐切换到 Metallica 的 "Enter Sandman"...
但是当我将 "Enter Sandman" MP3 添加到层次结构中的背景音乐对象时,我必须添加第二个具有相同名称(即音频源)的 "Audio Source"。
然后,当我尝试在代码中管理它时,我不能像在其他任何地方那样只 运行 GetComponent<AudioClip>
。
如何在脚本中的两首歌曲之间切换?这是我的对象设置的图片,然后是代码...
还有,我的代码(原样),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 ();
}
}
}
}
很明显,代码不行,但我还是完成了。
我将如何实施此配置?
您需要更改音频源上的剪辑。
http://docs.unity3d.com/ScriptReference/AudioSource.html
您可能想这样做(这样您就可以在检查器中设置音乐):
public AudioClip regular_music;
public AudioClip high_dmg_music;
然后只需将 AudioSource 的剪辑设置为其中之一即可。
只创建一个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();
}
我正在与 Unity 打交道,我创建了一个 "Damage Chain",如果我足够快地造成伤害,伤害链就会增加。
然后,当伤害链足够高时,我想从背景音乐切换到 Metallica 的 "Enter Sandman"...
但是当我将 "Enter Sandman" MP3 添加到层次结构中的背景音乐对象时,我必须添加第二个具有相同名称(即音频源)的 "Audio Source"。
然后,当我尝试在代码中管理它时,我不能像在其他任何地方那样只 运行 GetComponent<AudioClip>
。
如何在脚本中的两首歌曲之间切换?这是我的对象设置的图片,然后是代码...
还有,我的代码(原样),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 ();
}
}
}
}
很明显,代码不行,但我还是完成了。
我将如何实施此配置?
您需要更改音频源上的剪辑。 http://docs.unity3d.com/ScriptReference/AudioSource.html
您可能想这样做(这样您就可以在检查器中设置音乐):
public AudioClip regular_music;
public AudioClip high_dmg_music;
然后只需将 AudioSource 的剪辑设置为其中之一即可。
只创建一个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();
}