2016-06-30 214 views
0

我有一個非常長的音頻剪輯,當某個條件滿足時(第一個IF在下面的代碼中)應該開始播放,並繼續播放,直到滿足另一個條件(第二個IF)。停止音頻剪輯/音頻素材

問題是我無法計算如何使audioclip停止播放,我嘗試了audio.Stop(),但它說停止()有n個定義,你能幫忙嗎?

using UnityEngine; 
using System.Collections; 

public class PowerShutdown: MonoBehaviour { 

    public AudioClip[] on_sfx; 
    int i; 
    int k; 

    void Start() 
     { 
     k = 1; 
     } 

    void Update() 
     { 
     if (PlayLevel1.percentageLoadProductionint < 100 && StateManager.activeState is PlayState && Time.timeSinceLevelLoad > 1 && k== 1) 
      { 
      AudioSource.PlayClipAtPoint (on_sfx [0], transform.position); 
      k = 2; 
      } 

     if (PlayLevel1.percentageLoadProductionint > 100 && StateManager.activeState is PlayState && Time.timeSinceLevelLoad > 1 && k == 2) 
      { 
      audio.Stop(); 
      AudioSource.PlayClipAtPoint (on_sfx [1], transform.position); 
      k = 1; 
      } 
     } 
} 

謝謝!

+0

您需要在音頻源上調用「Stop」。最好不要使用「PlayClipAtPoint」(請參閱​​NewDeveloper的答案),而是使用另一個播放函數和附帶音頻源的gamobject。 –

+0

Unity告訴用這個代替GetComponent ().Stop(); –

+0

但它不起作用,因爲沒有附加到PowerShutdown對象的Audiosource。 –

回答

0

我認爲這個問題是因爲「PlayClipAtPoint」是一個靜態方法,由於引用錯誤,停止方法將會遇到問題。從閱讀文檔它說:「此功能創建音頻源,但一旦剪輯已完成播放,自動處理它。」

這意味着在指定播放所需音頻的3D空間處會創建一個新的「音頻源」。這意味着,要麼你需要參考新的音頻源(不確定你將如何做),或使用不同的播放方法。

+0

你是否建議另一種播放方法? –

+0

我會在您的audioSource上播放,然後在完成當前音頻剪輯後停止播放 – NewDeveloper