第一个剪辑停止时无法启动第二个AudioClip

时间:2014-08-04 18:28:56

标签: c# unity3d

新手编码器。

简单地说,当玩家点击屏幕上的按钮时,机器人会被实例化,推杆一会儿,以及"运行"声音播放。一旦机器人电量耗尽,声音就会停止播放,并且会停止播放新的音乐。声音播放。

除了最后一部分外,一切都有效。我无法获得"停止"一旦"跑步"播放声音声音停止播放。我在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剪辑可以正常播放。只是没有更新与该逻辑。显然,我错过了一些东西。任何帮助表示赞赏。感谢。

1 个答案:

答案 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。这可能会阻止您听到它。