Beispiel #1
0
    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);
    }
Beispiel #2
0
    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;
    }
Beispiel #3
0
    private static void RemoveCachedAudioClip(CachedAudioClip cachedAudioClip)
    {
        audioClipCache.Remove(cachedAudioClip.Path);

        if (cachedAudioClip.StreamedAudioClip != null)
        {
            cachedAudioClip.StreamedAudioClip.UnloadAudioData();
        }

        if (cachedAudioClip.FullAudioClip != null)
        {
            cachedAudioClip.FullAudioClip.UnloadAudioData();
        }
    }
Beispiel #4
0
    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);
        }
    }
Beispiel #5
0
    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);
        }
    }