2016-06-30 7 views
0

Ich habe einen sehr langen Audio-Clip, der zu spielen beginnen sollte, wenn eine bestimmte Bedingung erfüllt ist (1. IF im Code unten) und weiterspielen, bis eine andere Bedingung erfüllt ist (2. IF).Stop-Audio-Clip/Audiosource

Das Problem ist, ich kann nicht herausfinden, wie der Audioclip aufhören zu spielen, habe ich versucht audio.Stop(), aber es heißt es gibt eine Definition für Stop(), können Sie helfen?

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; 
      } 
     } 
} 

Vielen Dank!

+0

Sie müssen 'Stop' an der Audioquelle aufrufen. Besser nicht 'PlayClipAtPoint' verwenden (siehe Antwort von NewDeveloper), sondern eine andere Wiedergabefunktion und ein Gamobject mit angehängter Audioquelle. –

+0

Unity sagt, dass Sie stattdessen GetComponent verwenden sollen () .Stop(); –

+0

Aber es funktioniert nicht, da keine Audiosource an das PowerShutdown-Objekt angehängt ist. –

Antwort

0

Ich glaube, das Problem ist, weil "PlayClipAtPoint" eine statische Methode ist und die Stop-Methode aufgrund eines Referenzierungsfehlers Probleme damit haben wird. Beim Lesen der Dokumentation heißt es: "Diese Funktion erstellt eine Audioquelle, die sie aber automatisch entlädt, sobald der Clip wiedergegeben wurde."

Dies bedeutet, dass eine neue "AudioSource" am 3D-Raum erstellt wird, der für die Wiedergabe des angeforderten Audiomaterials festgelegt wurde. Das bedeutet, dass Sie entweder einen Verweis auf die neue Audioquelle benötigen (nicht sicher, wie Sie das tun würden), oder verwenden Sie eine andere Wiedergabemethode.

+0

beraten Sie über eine andere Spielmethode? –

+0

Ich würde Play auf Ihrer audioSource verwenden und es dann beenden, wenn Sie mit dem aktuellen Audioclip fertig sind – NewDeveloper