Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ivanmurzak/unity-audioloader
Asynchronous audio loading from remote or local destination. It has two layers of configurable cache system: RAM and Disk.
https://github.com/ivanmurzak/unity-audioloader
audio unity unity-plugin unity-plugins unity3d unity3d-plugin
Last synced: 2 months ago
JSON representation
Asynchronous audio loading from remote or local destination. It has two layers of configurable cache system: RAM and Disk.
- Host: GitHub
- URL: https://github.com/ivanmurzak/unity-audioloader
- Owner: IvanMurzak
- License: mit
- Created: 2023-08-06T17:36:07.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2024-01-22T20:10:53.000Z (11 months ago)
- Last Synced: 2024-10-10T10:06:00.561Z (2 months ago)
- Topics: audio, unity, unity-plugin, unity-plugins, unity3d, unity3d-plugin
- Language: C#
- Homepage:
- Size: 2.85 MB
- Stars: 32
- Watchers: 3
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Unity Audio Loader
![npm](https://img.shields.io/npm/v/extensions.unity.audioloader) [![openupm](https://img.shields.io/npm/v/extensions.unity.audioloader?label=openupm®istry_uri=https://package.openupm.com)](https://openupm.com/packages/extensions.unity.audioloader/) ![License](https://img.shields.io/github/license/IvanMurzak/Unity-AudioLoader) [![Stand With Ukraine](https://raw.githubusercontent.com/vshymanskyy/StandWithUkraine/main/badges/StandWithUkraine.svg)](https://stand-with-ukraine.pp.ua)
Async audio loader with two caching layers for Unity.
![Image Loader](https://github.com/IvanMurzak/Unity-AudioLoader/blob/master/Header.jpg?raw=true)
## Features
- ✔️ Async loading from **Web** or **Local** `AudioLoader.LoadAudioClip(audioURL);`
- ✔️ **Memory** and **Disk** caching - tries to load from memory first, then from disk
- ✔️ Dedicated thread for disk operations
- ✔️ Avoids loading same audio multiple times simultaneously, a task waits for completion the first and just returns loaded audio if at least one cache layer activated
- ✔️ Auto set to AudioSource `AudioLoader.SetAudioSource(audioURL, audioSource);`
- ✔️ Debug level for logging `AudioLoader.settings.debugLevel = DebugLevel.Error;`# Usage
In the main thread somewhere at the start of the project need to call `AudioLoader.Init();` once to initialize static properties in the right thread. It is required to be made in the main thread. Then you can use `AudioLoader` from any thread and at any time.
## Sample - Loading audio file, set to AudioSource
``` C#
using Extensions.Unity.AudioLoader;
using Cysharp.Threading.Tasks;public class AudioLoaderSample : MonoBehaviour
{
[SerializeField] string audioURL;
[SerializeField] AudioSource audioSource;async void Start()
{
// Loading audio file from web, cached for quick load next time
audioSource.clip = await AudioLoader.LoadAudioClip(audioURL);// Same loading with auto set to audio
await AudioLoader.SetAudioSource(audioURL, audioSource);
}
}
```## Sample - Loading audio into multiple Audio components
``` C#
using Extensions.Unity.AudioLoader;
using Cysharp.Threading.Tasks;public class AudioLoaderSample : MonoBehaviour
{
[SerializeField] string audioURL;
[SerializeField] AudioSource audioSource1;
[SerializeField] AudioSource audioSource2;void Start()
{
// Loading with auto set to audio
AudioLoader.SetAudioSource(audioURL, audioSource1, audioSource2).Forget();
}
}
```# Cache
Cache system based on the two layers. The first layer is **memory cache**, and the second is **disk cache**. Each layer could be enabled or disabled. It could be used without caching at all. By default, both layers are enabled.
## Setup Cache
- `AudioLoader.settings.useMemoryCache = true;` default value is `true`
- `AudioLoader.settings.useDiskCache = true;` default value is `true`
Change disk cache folder:``` C#
AudioLoader.settings.diskSaveLocation = Application.persistentDataPath + "/myCustomFolder";
```## Override Cache
``` C#
// Override Memory cache for specific audio
AudioLoader.SaveToMemoryCache(url, audioClip);// Take from Memory cache for specific audio file if exists
AudioLoader.LoadFromMemoryCache(url);
```## Does Cache contain audio
``` C#
// Check if any cache contains specific audio file
AudioLoader.CacheContains(url);// Check if Memory cache contains specific audio file
AudioLoader.MemoryCacheContains(url);// Check if Memory cache contains specific audio file
AudioLoader.DiskCacheContains(url);
```## Clear Cache
``` C#
// Clear memory Memory and Disk cache
AudioLoader.ClearCache();// Clear only Memory cache for all audio files
AudioLoader.ClearMemoryCache();// Clear only Memory cache for specific audio file
AudioLoader.ClearMemoryCache(url);// Clear only Disk cache for all audio files
AudioLoader.ClearDiskCache();// Clear only Disk cache for specific audio file
AudioLoader.ClearDiskCache(url);
```# Installation
- [Install OpenUPM-CLI](https://github.com/openupm/openupm-cli#installation)
- Open command line in Unity project folder
- Run the command``` CLI
openupm add extensions.unity.audioloader
```