AudioDataLoadState
перечисление
Описание
Значение описывает текущее состояние загрузки аудиоданных, связанных с AudioClip.
Это перечисление полезно, если вы хотите:
- Только загрузить аудио данные, если данные еще не загружены.
- Выполнение действий во время загрузки аудиоданных.
- Отслеживание прогресса и отказов груза.
- Убедитесь, что некоторые действия не начинаются до тех пор, пока аудио не начнет загружаться или не закончит загрузку.
Используйте AudioClip.LoadAudioData и AudioClip.UnloadAudioData для загрузки и выгрузки аудиоданных AudioClip.
Дополнительные ресурсы: AudioClip.loadState, AudioClip.UnloadAudioData.
// If you click the button, it will load and play the sound you attach to this GameObject. // If you click the button again, the sound will stop and the audio data will unload. // Assign this script to a GameObject and assign a Button and an AudioClip in the Inspector.
using UnityEngine; using System.Collections; using UnityEngine.UI; using TMPro;
public class AudioDataLoadStateExample : MonoBehaviour { public Button playButton; public AudioClip audioClip; TextMeshProUGUI buttonText; AudioSource audioSource;
void Awake() { // Create and attach an AudioSource to the GameObject to play the audio. audioSource = gameObject.AddComponent<AudioSource>();
if (audioClip != null) { audioSource.clip = audioClip;
if (playButton != null) { buttonText = playButton.GetComponentInChildren<TextMeshProUGUI>(); buttonText.text = "Play";
playButton.onClick.AddListener(OnPlayStopButtonClicked); } else Debug.LogError("Button not assigned in Inspector."); } else Debug.LogError("AudioClip not assigned in Inspector."); }
void OnPlayStopButtonClicked() { // Load and play the audio if the audio isn't playing. if (audioSource.isPlaying == false) { if (!audioClip.preloadAudioData) { audioClip.LoadAudioData(); } StartCoroutine(CheckLoadAudioClip()); } // Button clicked in Stop state, so if the audio is playing, stop and unload. else { audioSource.Stop(); audioClip.UnloadAudioData(); // Don't want the audio to be playable again, so remove button. playButton.gameObject.SetActive(false); } }
private IEnumerator CheckLoadAudioClip() { // Check if the audio clip has finished loading. while (audioClip.loadState == AudioDataLoadState.Loading) { Debug.Log($"AudioClip {audioClip.name} is still loading..."); yield return null; }
switch (audioClip.loadState) { case AudioDataLoadState.Unloaded: { Debug.Log($"AudioClip {audioClip.name} is still unloaded."); break; } case AudioDataLoadState.Failed: { Debug.Log($"AudioClip {audioClip.name} failed to load."); break; } case AudioDataLoadState.Loaded: { Debug.Log($"AudioClip {audioClip.name} is fully loaded."); audioSource.Play(); buttonText.text = "Stop"; break; } } } }
Свойства
| Свойство | Описание |
|---|---|
| Unloaded | Значение, возвращаемое AudioClip.loadState для AudioClip, который не имеет загруженных аудиоданных и где загрузка еще не была инициирована. |
| Loading | Значение, возвращаемое AudioClip.loadState для AudioClip, который в настоящее время загружает аудиоданные. |
| Loaded | Значение, возвращаемое AudioClip.loadState для AudioClip, который успешно загрузил свои аудиоданные. |
| Failed | Значение, возвращаемое AudioClip.loadState для AudioClip, который не смог загрузить свои аудиоданные. |