Unity 6.3
0 онлайн 7 гостей 3 в системе
Вход

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, который не смог загрузить свои аудиоданные.