2016-07-01 8 views
0

Ich versuche, einen Audioclip abzuspielen, zu groß, um PlayClipAtPoint() zu verwenden, und ich muss ihn später stoppen.Abspielen einer langen Audioquelle/eines Audioclips

public class GridPower: MonoBehaviour { 

    private AudioSource audiosource; 
    public AudioClip poweroff; 
    int k; 

    void Start() 
     { 
     audiosource= GetComponent<AudioSource>(); 
     k = 1; 
     } 

    void Update() 
     { 
     if (PlayLevel1.percentageLoadProductionint < 100 && StateManager.activeState is PlayState && Time.timeSinceLevelLoad > 1 && k== 1) 
      { 
      audiosource.clip = poweroff; 
      audiosource.Play(); 
      k = 2; 
      } 
     } 
} 

folgte ich eine Dokumentation aber Einheit sagt mir, dass es keine Audiosource, um das Spiel Objekt angebracht ist, wo sich das Skript befindet.

Können Sie helfen?

Antwort

3

das ist völlig falsch. Löschen Sie alle Erwähnungen von "AudioClip" - Sie nie, nie verwenden Sie es in Code.

(1) ein leeres Spielobjekt machen (nennen Sie es "Test"). (2) Legen Sie eine AudioSource darauf - was auch immer Sie mögen. (3) in Ihrem Skript, haben Sie eine öffentliche Inspektor-Variable, um die AudioSource beim Test aufzunehmen. (4) Spielen Sie einfach diese Audioquelle. Ehrlich gesagt, es ist einfach so einfach. sagen Sie haben vielleicht 20 verschiedene Lieder. haben Sie einfach 20 verschiedene Spielobjekte wie "test". Es ist wirklich so einfach.

Angenommen, Sie haben 500 Soundeffekte in einem Projekt. Sie haben einfach 500 Spielobjekte (wie im Beispiel "test") jeweils mit dem unterschiedlichen Sound darauf.

(natürlich haben nur ein leeres Spielobjekt, sitzen sie alle „unter“, um es zu halten ordentlich.)

Hinweis - ein geiles Feature in Unity, wählen Sie und ziehen Sie sagen, 100 Soundeffekte (oder was auch immer Audio) von Assets in die Szene: Beachten Sie, dass es "weiß", um jedes auf ein Spielobjekt für Sie zu setzen. Das war eine riesige Ergänzung in Unity5.

ist es einfach so einfach.

+0

Wie spiele ich die Audioquelle? –

+0

@GrowAnimation Rufen Sie '.Play() /. Stop()' auf diese Variable von # 3. –

+0

@GunnarB. Kumpel. Hier ist eine Herausforderung ... http://stackoverflow.com/questions/38336835 – Fattie