private static AudioClip LoadAndCacheAudioClip(string path) { if (!File.Exists(path)) { Debug.LogError("File does not exist: " + path); return(null); } AudioClip audioClip = AudioUtils.GetAudioClip(path); if (audioClip == null) { Debug.LogError("Could load not AudioClip from path: " + path); return(null); } if (audioClipCache.Count >= criticalCacheSize) { RemoveOldestAudioClipsFromCache(); } // Cache the new AudioClip. CachedAudioClip cachedAudioClip = new CachedAudioClip(path, audioClip, Time.frameCount); audioClipCache[path] = cachedAudioClip; return(audioClip); }
private static void AddAudioClipToCache(string path, AudioClip audioClip, bool streamAudio) { if (audioClipCache.Count >= criticalCacheSize) { RemoveOldestAudioClipsFromCache(); } // Cache the new AudioClip. CachedAudioClip cachedAudioClip = new CachedAudioClip(path, audioClip, Time.frameCount, streamAudio); audioClipCache[path] = cachedAudioClip; }
private static void RemoveCachedAudioClip(CachedAudioClip cachedAudioClip) { audioClipCache.Remove(cachedAudioClip.Path); if (cachedAudioClip.StreamedAudioClip != null) { cachedAudioClip.StreamedAudioClip.UnloadAudioData(); } if (cachedAudioClip.FullAudioClip != null) { cachedAudioClip.FullAudioClip.UnloadAudioData(); } }
private static void RemoveOldestAudioClipsFromCache() { CachedAudioClip oldest = null; foreach (CachedAudioClip cachedAudioClip in audioClipCache.Values) { if (oldest == null || oldest.CreatedInFrame > cachedAudioClip.CreatedInFrame) { oldest = cachedAudioClip; } } if (oldest != null) { RemoveCachedAudioClip(oldest); } }
private static void RemoveOldestAudioClipsFromCache() { CachedAudioClip oldest = null; foreach (CachedAudioClip cachedAudioClip in audioClipCache.Values) { if (oldest == null || oldest.CreatedInFrame > cachedAudioClip.CreatedInFrame) { oldest = cachedAudioClip; } } if (oldest != null) { oldest.AudioClip.UnloadAudioData(); audioClipCache.Remove(oldest.Path); } }