Jump to content
Unity Insider Forum

Zufällige Audio-Datei aus Liste abspielen


DerStefan

Recommended Posts

Hallo,

ich habe 2 Images, welche ich mit einer Button-Komponente und einer Audiosource-Komponente ausgestattet habe.
Ziel ist, dass beide Images zufällige Sounddateien abspielen, die sich in verschiedenen Arrays/Listen befinden.

Die Variante für das Gegnerteam funktioniert einwandfrei, allerdings möchte ich nicht zwingend die Audiodateien in den Inspector reinziehen müssen.
Aus diesem Grund bevorzuge ich die erste Variante (ClickSoundTeam), welche aber leider nicht funktioniert.
"PlayOneShot was called with a null AudioClip."

Kann mir bitte jemand sagen, warum es nicht funktioniert?
Die Button-Komponenten greifen auf die korrekten Funktionen zu (mittels OnClick() im Inspector)

Die wav-Dateien befinden sich im Ordner "Assets\Resources\Sounds".
Ich hatte sie auch in "Assets\Sounds" gepackt und es sowohl mit als auch ohne Dateiendung versucht - gleiches Ergebnis.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
	public class SoundPlay : MonoBehaviour
{
  private AudioSource audioSource;
  private AudioClip[] teamSoundList;
  public AudioClip[] opponentArray;
	  public void ClickSoundTeam()
  {
    audioSource = GetComponent<AudioSource>();
    teamSoundList = new AudioClip[]{(AudioClip)Resources.Load("Sounds/000.wav"),
                                     (AudioClip)Resources.Load("Sounds/001.wav"),
                                     (AudioClip)Resources.Load("Sounds/002"),
                                     (AudioClip)Resources.Load("Sounds/003"),
                                     (AudioClip)Resources.Load("Sounds/004"),
                                     (AudioClip)Resources.Load("Sounds/005")};
    audioSource.clip = teamSoundList[Random.Range(0, teamSoundList.Length)];
    audioSource.PlayOneShot(audioSource.clip); // FUNKTIONIERT NICHT!
  }
  public void ClickSoundOpponent()
  {
    audioSource = GetComponent<AudioSource>();
    audioSource.clip = opponentArray[Random.Range(0, opponentArray.Length)];
    audioSource.PlayOneShot(audioSource.clip); // FUNKTIONIERT!
  }
}

Vielen Dank für jede Hilfe und beste Grüße!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das ist halt so der Grund, warum Resources.Load kacke ist. Der Compiler kann dir nicht mehr helfen und du musst rumprobieren, wo nun das Problem ist. Mal davon abgesehen, dass du die immer wieder neu lädst und nicht entlädst.

Die Dateiendung lässt du auf jeden Fall weg. Der Pfad stimmt auch (sofern du von einem Ordner in deiner Project View redest). Die Sounds 002 bis 005 sollte daher funktionieren, wenn die Dateien 002.wav usw. heißen. Theoretisch hast du ja aber ne 2/3-Chance, dass dein Code funktioniert. Wenn der Fehler immer auftritt, dann ist das Problem evtl. doch woanders.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...