当第一个剪辑停止时,不能让第二个AudioClip开始
本文关键字:不能 第二个 AudioClip 开始 第一个 | 更新日期: 2023-09-27 18:16:24
新手编码员
简单地说,当玩家点击屏幕上的按钮时,一个机器人就会被实例化,四处走动一会儿,然后播放"奔跑"的声音。一旦机器人电量耗尽,声音停止播放,并且一个新的"停止"声音应该播放。
除了最后一部分,其他都可以。一旦"running"的声音停止播放,我就无法让"stop"的声音播放。我在Update函数中处理这个逻辑。
private AudioSource
robotRun_big,
robotStop_big;
private RobotMover robotMover;
// Omitted AddAudio() function that works fine.
void Awake()
{
// Contains a variable I use as a timer
robotMover = GetComponent<RobotMover>();
// Declare and initialize an AudioClip
AudioClip clipRobotRun_big = Resources.Load("SFX_19-23/robotRun_big") as AudioClip;
// Initialize an AudioSource (declared as a private variable above)
robotRun_big = AddAudio(clipRobotRun_big, true, false, 0.5f);
// Same as above
AudioClip clipRobotStop_big = Resources.Load("SFX_19-23/robotStop_big") as AudioClip;
robotStop_big = AddAudio(clipRobotStop_big, false, false, 1.0f);
}
// This is handled elsewhere, but it determines which object player clicks
public void CheckGameObject(GameObject clicked)
{
if(clicked.name == "RobotGrower")
robotRun_big.Play(); // This works fine
}
void Update()
{
if(robotMover.robotPower <= 0)
robotRun_big.Stop(); // This works fine.
if(!audio.isPlaying)
robotStop_big.Play(); // This DOES NOT work fine.
}
我也试过这个:
if(robotMover.robotPower <= 0)
robotRun_big.Stop();
robotStop_big.Play();
:
if(robotMover.robotPower <= 0)
robotRun_big.Stop();
robotStopped = true;
if(robotStopped)
robotStop_big.Play();
如果我从Awake或其他地方播放robotStop_big剪辑,则播放良好。只是在Update中没有那个逻辑。很明显,我漏掉了什么。任何帮助都是感激的。谢谢。
而不是:
if(!audio.isPlaying)
robotStop_big.Play();
使用:
if (!robotRun_big.isPlaying)
robotStop_big.Play();
GameObject。audio将返回一个AudioSource组件,但是不能保证它返回的AudioSource就是你想要的那个。因为你要定义多个audiosource,所以使用它们来代替。audio访问器。
禁止这种改变,另一件要尝试的事情是确保你放入robotStop_big AudioSource的AudioClip没有设置为3D。