新手编码器。
简单地说,当玩家点击屏幕上的按钮时,机器人会被实例化,推杆一会儿,以及"运行"声音播放。一旦机器人电量耗尽,声音就会停止播放,并且会停止播放新的音乐。声音应播放。
除了最后一部分外,一切都有效。我无法获得"停止"一旦"跑步"播放声音声音停止播放。我在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剪辑可以正常播放。只是没有更新与该逻辑。显然,我错过了一些东西。任何帮助表示赞赏。感谢。
答案 0 :(得分:0)
而不是:
if(!audio.isPlaying)
robotStop_big.Play();
使用:
if (!robotRun_big.isPlaying)
robotStop_big.Play();
GameObject.audio将返回一个AudioSource组件,但是,不能保证它返回的AudioSource与您想要的相同。由于您无论如何都要定义多个AudioSource,因此请使用它们而不是.audio访问器。
除非发生这种变化,否则另一件事就是确保放入robotStop_big AudioSource的AudioClip未设置为3D。这可能会阻止您听到它。