├── .github
└── FUNDING.yml
├── .gitignore
├── .vscode
├── extensions.json
├── launch.json
└── settings.json
├── .vsconfig
├── AlternativeDestributionOptions.md
├── Assets
├── _PackageRoot.meta
└── _PackageRoot
│ ├── Documentation~
│ ├── .gitignore
│ └── README.md
│ ├── Editor.meta
│ ├── Editor
│ ├── Gizmos.meta
│ ├── Gizmos
│ │ └── .gitignore
│ ├── Scripts.meta
│ └── Scripts
│ │ └── .gitignore
│ ├── README.md
│ ├── README.md.meta
│ ├── Runtime.meta
│ ├── Runtime
│ ├── .gitignore
│ ├── AudioLoader.AudioSource.cs
│ ├── AudioLoader.AudioSource.cs.meta
│ ├── AudioLoader.DiskCache.cs
│ ├── AudioLoader.DiskCache.cs.meta
│ ├── AudioLoader.MemoryCache.cs
│ ├── AudioLoader.MemoryCache.cs.meta
│ ├── AudioLoader.Settings.cs
│ ├── AudioLoader.Settings.cs.meta
│ ├── AudioLoader.cs
│ ├── AudioLoader.cs.meta
│ ├── Extensions.Unity.AudioLoader.asmdef
│ ├── Extensions.Unity.AudioLoader.asmdef.meta
│ ├── LimitedConcurrencyLevelTaskScheduler.cs
│ └── LimitedConcurrencyLevelTaskScheduler.cs.meta
│ ├── Samples~
│ └── .gitignore
│ ├── Tests.meta
│ ├── Tests
│ ├── Editor.meta
│ ├── Editor
│ │ ├── .gitignore
│ │ ├── Extensions.Unity.AudioLoader.Editor.Tests.asmdef
│ │ ├── Extensions.Unity.AudioLoader.Editor.Tests.asmdef.meta
│ │ ├── TestCache.cs
│ │ ├── TestCache.cs.meta
│ │ ├── TestLoading.cs
│ │ └── TestLoading.cs.meta
│ ├── Runtime.meta
│ └── Runtime
│ │ └── .gitignore
│ ├── package.json
│ └── package.json.meta
├── Commands
├── NPM--AddUser.bat
├── NPM--CopyREADME.bat
├── NPM--UpdateDependencies.bat
├── NPM--VersionMajor.bat
├── NPM--VersionMinor.bat
├── NPM--VersionPatch.bat
├── [!!!]--GitHub--Release.bat
├── [!!!]--NPM--Publish.bat
└── [!]--GitHub--DraftRelease.bat
├── Header-Full.png
├── Header.jpg
├── LICENSE
├── Packages
├── manifest.json
└── packages-lock.json
├── ProjectSettings
├── AudioManager.asset
├── ClusterInputManager.asset
├── DynamicsManager.asset
├── EditorBuildSettings.asset
├── EditorSettings.asset
├── GraphicsSettings.asset
├── InputManager.asset
├── MemorySettings.asset
├── NavMeshAreas.asset
├── PackageManagerSettings.asset
├── Physics2DSettings.asset
├── PresetManager.asset
├── ProjectSettings.asset
├── ProjectVersion.txt
├── QualitySettings.asset
├── TagManager.asset
├── TimeManager.asset
├── UnityConnectSettings.asset
├── VFXManager.asset
└── VersionControlSettings.asset
├── README.md
├── Test Audio Files
├── sample.aiff
├── sample.mp3
└── sample.wav
└── UserSettings
├── EditorUserSettings.asset
├── Search.index
└── Search.settings
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | # These are supported funding model platforms
2 |
3 | github: IvanMurzak
4 | patreon: # Replace with a single Patreon username
5 | open_collective: # Replace with a single Open Collective username
6 | ko_fi: # Replace with a single Ko-fi username
7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
9 | liberapay: # Replace with a single Liberapay username
10 | issuehunt: # Replace with a single IssueHunt username
11 | lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
12 | polar: # Replace with a single Polar username
13 | buy_me_a_coffee: # Replace with a single Buy Me a Coffee username
14 | thanks_dev: # Replace with a single thanks.dev username
15 | custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
16 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # This .gitignore file should be placed at the root of your Unity project directory
2 | #
3 | # Get latest from https://github.com/github/gitignore/blob/master/Unity.gitignore
4 | #
5 | /[Ll]ibrary/
6 | /[Tt]emp/
7 | /[Oo]bj/
8 | /[Bb]uild/
9 | /[Bb]uilds/
10 | /[Ll]ogs/
11 | /[Mm]emoryCaptures/
12 |
13 | # Asset meta data should only be ignored when the corresponding asset is also ignored
14 | !/[Aa]ssets/**/*.meta
15 |
16 | # Uncomment this line if you wish to ignore the asset store tools plugin
17 | # /[Aa]ssets/AssetStoreTools*
18 |
19 | # Autogenerated Jetbrains Rider plugin
20 | [Aa]ssets/Plugins/Editor/JetBrains*
21 |
22 | # Visual Studio cache directory
23 | .vs/
24 |
25 | # Gradle cache directory
26 | .gradle/
27 |
28 | # Autogenerated VS/MD/Consulo solution and project files
29 | ExportedObj/
30 | .consulo/
31 | *.csproj
32 | *.unityproj
33 | *.sln
34 | *.suo
35 | *.tmp
36 | *.user
37 | *.userprefs
38 | *.pidb
39 | *.booproj
40 | *.svd
41 | *.pdb
42 | *.mdb
43 | *.opendb
44 | *.VC.db
45 |
46 | # Unity3D generated meta files
47 | *.pidb.meta
48 | *.pdb.meta
49 | *.mdb.meta
50 |
51 | # Unity3D generated file on crash reports
52 | sysinfo.txt
53 |
54 | # Builds
55 | *.apk
56 | *.unitypackage
57 |
58 | # Crashlytics generated file
59 | crashlytics-build.properties
60 |
61 | */AndroidLogcatSettings.asset
62 | /Assets/StreamingAssets
63 |
64 | # Crashlytics generated file
65 | crashlytics-build.properties
66 |
67 | # ODIN Ignore the auto-generated AOT compatibility dll.
68 | /Assets/Plugins/Sirenix/Assemblies/AOT/*
69 | /Assets/Plugins/Sirenix/Assemblies/AOT**
70 |
71 | # ODIN Ignore all unpacked demos.
72 | /Assets/Plugins/Sirenix/Demos/*
73 |
74 | # ODIN plugin
75 | /Assets/Plugins/Sirenix**
76 |
77 | UserSettings/*
--------------------------------------------------------------------------------
/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | "recommendations": [
3 | "visualstudiotoolsforunity.vstuc"
4 | ]
5 | }
6 |
--------------------------------------------------------------------------------
/.vscode/launch.json:
--------------------------------------------------------------------------------
1 | {
2 | "version": "0.2.0",
3 | "configurations": [
4 | {
5 | "name": "Attach to Unity",
6 | "type": "vstuc",
7 | "request": "attach",
8 | }
9 | ]
10 | }
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "files.exclude":
3 | {
4 | "**/.DS_Store":true,
5 | "**/.git":true,
6 | "**/.vs":true,
7 | "**/.gitmodules":true,
8 | "**/.vsconfig":true,
9 | "**/*.booproj":true,
10 | "**/*.pidb":true,
11 | "**/*.suo":true,
12 | "**/*.user":true,
13 | "**/*.userprefs":true,
14 | "**/*.unityproj":true,
15 | "**/*.dll":true,
16 | "**/*.exe":true,
17 | "**/*.pdf":true,
18 | "**/*.mid":true,
19 | "**/*.midi":true,
20 | "**/*.wav":true,
21 | "**/*.gif":true,
22 | "**/*.ico":true,
23 | "**/*.jpg":true,
24 | "**/*.jpeg":true,
25 | "**/*.png":true,
26 | "**/*.psd":true,
27 | "**/*.tga":true,
28 | "**/*.tif":true,
29 | "**/*.tiff":true,
30 | "**/*.3ds":true,
31 | "**/*.3DS":true,
32 | "**/*.fbx":true,
33 | "**/*.FBX":true,
34 | "**/*.lxo":true,
35 | "**/*.LXO":true,
36 | "**/*.ma":true,
37 | "**/*.MA":true,
38 | "**/*.obj":true,
39 | "**/*.OBJ":true,
40 | "**/*.asset":true,
41 | "**/*.cubemap":true,
42 | "**/*.flare":true,
43 | "**/*.mat":true,
44 | "**/*.meta":true,
45 | "**/*.prefab":true,
46 | "**/*.unity":true,
47 | "build/":true,
48 | "Build/":true,
49 | "Library/":true,
50 | "library/":true,
51 | "obj/":true,
52 | "Obj/":true,
53 | "Logs/":true,
54 | "logs/":true,
55 | "ProjectSettings/":true,
56 | "UserSettings/":true,
57 | "temp/":true,
58 | "Temp/":true
59 | },
60 | "omnisharp.enableRoslynAnalyzers": true
61 | }
--------------------------------------------------------------------------------
/.vsconfig:
--------------------------------------------------------------------------------
1 | {
2 | "version": "1.0",
3 | "components": [
4 | "Microsoft.VisualStudio.Workload.ManagedGame"
5 | ]
6 | }
7 |
--------------------------------------------------------------------------------
/AlternativeDestributionOptions.md:
--------------------------------------------------------------------------------
1 | # NPMJS
2 | 
3 |
4 | NPMJS is the most popular Package destribution portal in the world. It is used for any packages from different programming areas of knowledge. We are interesting in using the platform for having dependencies on Unity packages only and publishing our own. It is free to use and work very well for my opinion.
5 | ### Pros
6 | - Ultra fast deployment
7 | - Easy creation of new versions
8 | - Unity Package Manager supports versioning from NPMJS
9 | - Trusted platform by huge community
10 | ### Cons
11 | - Need to create account and authorize once
12 |
13 |
14 |
15 | # OpenUPM
16 | 
17 |
18 | Popular in Unity community platform for package destribution. Created as open sourced project for helping people to destribute their packages.
19 | ### Pros
20 | - Made especially for Unity
21 | - No registration needed
22 | - Package can be deployed directly from GitHub repository
23 | ### Cons
24 | - Long deployment duration (10 - 60 minutes)
25 | - Small community (in comparison to other options)
26 |
27 |
28 |
29 | # GitHub Packages
30 | 
31 |
32 | Amazing GitHub feature, also Unity support it
33 | ### Pros
34 | - Ultra fast deployment
35 | - Trusted platform by huge community
36 | ### Cons
37 | - Does not support version fetching, it means you can't see when new version of the package is available in UPM. To install new version you should manually change the version in a project.
38 |
39 |
40 |
41 | # GitHub Repository
42 | 
43 |
44 | Unity UPM support direct GitHub links to public repositories for using them as a package. The only required thing - the link should point on a folder which contains `package.json` file.
45 | ### Pros
46 | - no special steps required, just use your public repository as a package in UPM
47 | ### Cons
48 | - Does not support version fetching, it means you can't see when new version of the package is available in UPM. To install new version you should manually change the version in a project.
49 |
50 |
51 |
52 | # How to use
53 | - "Use this template" green button at top right corner of GitHub page
54 | - Clone your new repository
55 | - Add all your stuff to Assets/_PackageRoot directory
56 | - Update Assets/_PackageRoot/package.json
to yours
57 | - (on Windows) execute gitSubTreePushToUPM.bat
58 | - (on Mac) execute gitSubTreePushToUPM.makefile
59 |
60 | - (optional) Create release from UPM branch on GitHub web page for support different versions
61 |
62 | 
63 |
64 |
65 | # How to import your package to Unity project
66 | You may use one of the variants
67 |
68 | ## Variant 1
69 | - Select "Add package from git URL"
70 | - Paste URL to your GitHub repository with simple modification:
71 | - https://github.com/USER/REPO.git#upm
72 | Dont forget to replace **USER** and **REPO** to yours
73 |
74 | 
75 |
76 | ### **Or** you may use special version if you create one
77 | https://github.com/USER/REPO.git#v1.0.0
78 | Dont forget to replace **USER** and **REPO** to yours
79 |
80 | ## Variant 2
81 | Modify manifest.json file. Change "your.own.package"
to the name of your package.
82 | Dont forget to replace **USER** and **REPO** to yours.
83 |
{
84 | "dependencies": {
85 | "your.own.package": "https://github.com/USER/REPO.git#upm"
86 | }
87 | }
88 |
89 |
90 | ### **Or** you may use special version if you create one
91 | Dont forget to replace **USER** and **REPO** to yours.
92 | {
93 | "dependencies": {
94 | "your.own.package": "https://github.com/USER/REPO.git#v1.0.0"
95 | }
96 | }
97 |
98 |
--------------------------------------------------------------------------------
/Assets/_PackageRoot.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 74eef2d7f723dee4ea8edf6e9fbfc9c5
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/_PackageRoot/Documentation~/.gitignore:
--------------------------------------------------------------------------------
1 | # Except this file
2 | !.gitignore
--------------------------------------------------------------------------------
/Assets/_PackageRoot/Documentation~/README.md:
--------------------------------------------------------------------------------
1 | # Unity Audio Loader
2 |
3 |  [](https://openupm.com/packages/extensions.unity.audioloader/)  [](https://stand-with-ukraine.pp.ua)
4 |
5 | Async audio loader with two caching layers for Unity.
6 |
7 | ## Features
8 |
9 | - ✔️ Async loading from **Web** or **Local** `AudioLoader.LoadAudioClip(audioURL);`
10 | - ✔️ **Memory** and **Disk** caching - tries to load from memory first, then from disk
11 | - ✔️ Dedicated thread for disk operations
12 | - ✔️ Avoids loading same audio multiple times simultaneously, task waits for completion the first and just returns loaded audio if at least one cache layer activated
13 | - ✔️ Auto set to AudioSource `AudioLoader.SetAudioSource(audioURL, audioSource);`
14 | - ✔️ Debug level for logging `AudioLoader.settings.debugLevel = DebugLevel.Error;`
15 |
16 | # Usage
17 |
18 | In main thread somewhere at start of the project need to call `AudioLoader.Init();` once to initialize static properties in right thread. It is required to make in main thread. Then you can use `AudioLoader` from any thread and any time.
19 |
20 | ## Sample - Loading audio file, set to AudioSource
21 |
22 | ``` C#
23 | using Extensions.Unity.AudioLoader;
24 | using Cysharp.Threading.Tasks;
25 |
26 | public class AudioLoaderSample : MonoBehaviour
27 | {
28 | [SerializeField] string audioURL;
29 | [SerializeField] AudioSource audioSource;
30 |
31 | async void Start()
32 | {
33 | // Loading audio file from web, cached for quick load next time
34 | audioSource.clip = await AudioLoader.LoadAudioClip(audioURL);
35 |
36 | // Same loading with auto set to audio
37 | await AudioLoader.SetAudioSource(audioURL, audioSource);
38 | }
39 | }
40 | ```
41 |
42 | ## Sample - Loading audio into multiple Audio components
43 |
44 | ``` C#
45 | using Extensions.Unity.AudioLoader;
46 | using Cysharp.Threading.Tasks;
47 |
48 | public class AudioLoaderSample : MonoBehaviour
49 | {
50 | [SerializeField] string audioURL;
51 | [SerializeField] AudioSource audioSource1;
52 | [SerializeField] AudioSource audioSource2;
53 |
54 | void Start()
55 | {
56 | // Loading with auto set to audio
57 | AudioLoader.SetAudioSource(audioURL, audioSource1, audioSource2).Forget();
58 | }
59 | }
60 | ```
61 |
62 | # Cache
63 |
64 | Cache system based on the two layers. First layer is **memory cache**, second is **disk cache**. Each layer could be enabled or disabled. Could be used without caching at all. By default both layers are enabled.
65 |
66 | ## Setup Cache
67 |
68 | - `AudioLoader.settings.useMemoryCache = true;` default value is `true`
69 | - `AudioLoader.settings.useDiskCache = true;` default value is `true`
70 |
71 | Change disk cache folder:
72 |
73 | ``` C#
74 | AudioLoader.settings.diskSaveLocation = Application.persistentDataPath + "/myCustomFolder";
75 | ```
76 |
77 | ## Override Cache
78 |
79 | ``` C#
80 | // Override Memory cache for specific audio
81 | AudioLoader.SaveToMemoryCache(url, audioClip);
82 |
83 | // Take from Memory cache for specific audio file if exists
84 | AudioLoader.LoadFromMemoryCache(url);
85 | ```
86 |
87 | ## Does Cache contain audio
88 |
89 | ``` C#
90 | // Check if any cache contains specific audio file
91 | AudioLoader.CacheContains(url);
92 |
93 | // Check if Memory cache contains specific audio file
94 | AudioLoader.MemoryCacheContains(url);
95 |
96 | // Check if Memory cache contains specific audio file
97 | AudioLoader.DiskCacheContains(url);
98 | ```
99 |
100 | ## Clear Cache
101 |
102 | ``` C#
103 | // Clear memory Memory and Disk cache
104 | AudioLoader.ClearCache();
105 |
106 | // Clear only Memory cache for all audio files
107 | AudioLoader.ClearMemoryCache();
108 |
109 | // Clear only Memory cache for specific audio file
110 | AudioLoader.ClearMemoryCache(url);
111 |
112 | // Clear only Disk cache for all audio files
113 | AudioLoader.ClearDiskCache();
114 |
115 | // Clear only Disk cache for specific audio file
116 | AudioLoader.ClearDiskCache(url);
117 | ```
118 |
119 | # Installation
120 |
121 | - [Install OpenUPM-CLI](https://github.com/openupm/openupm-cli#installation)
122 | - Open command line in Unity project folder
123 | - Run the command
124 |
125 | ``` CLI
126 | openupm add extensions.unity.audioloader
127 | ```
128 |
--------------------------------------------------------------------------------
/Assets/_PackageRoot/Editor.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 197ccdd7d24df8c43b73e9e90cd41999
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/_PackageRoot/Editor/Gizmos.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: c2f19e30d068eda41926bedfc2a0822b
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/_PackageRoot/Editor/Gizmos/.gitignore:
--------------------------------------------------------------------------------
1 | # Except this file
2 | !.gitignore
--------------------------------------------------------------------------------
/Assets/_PackageRoot/Editor/Scripts.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: b43cdf50ff69fa748bec1936e75843f7
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/_PackageRoot/Editor/Scripts/.gitignore:
--------------------------------------------------------------------------------
1 | # Except this file
2 | !.gitignore
--------------------------------------------------------------------------------
/Assets/_PackageRoot/README.md:
--------------------------------------------------------------------------------
1 | # Unity Audio Loader
2 |
3 |  [](https://openupm.com/packages/extensions.unity.audioloader/)  [](https://stand-with-ukraine.pp.ua)
4 |
5 | Async audio loader with two caching layers for Unity.
6 |
7 | ## Features
8 |
9 | - ✔️ Async loading from **Web** or **Local** `AudioLoader.LoadAudioClip(audioURL);`
10 | - ✔️ **Memory** and **Disk** caching - tries to load from memory first, then from disk
11 | - ✔️ Dedicated thread for disk operations
12 | - ✔️ Avoids loading same audio multiple times simultaneously, task waits for completion the first and just returns loaded audio if at least one cache layer activated
13 | - ✔️ Auto set to AudioSource `AudioLoader.SetAudioSource(audioURL, audioSource);`
14 | - ✔️ Debug level for logging `AudioLoader.settings.debugLevel = DebugLevel.Error;`
15 |
16 | # Usage
17 |
18 | In main thread somewhere at start of the project need to call `AudioLoader.Init();` once to initialize static properties in right thread. It is required to make in main thread. Then you can use `AudioLoader` from any thread and any time.
19 |
20 | ## Sample - Loading audio file, set to AudioSource
21 |
22 | ``` C#
23 | using Extensions.Unity.AudioLoader;
24 | using Cysharp.Threading.Tasks;
25 |
26 | public class AudioLoaderSample : MonoBehaviour
27 | {
28 | [SerializeField] string audioURL;
29 | [SerializeField] AudioSource audioSource;
30 |
31 | async void Start()
32 | {
33 | // Loading audio file from web, cached for quick load next time
34 | audioSource.clip = await AudioLoader.LoadAudioClip(audioURL);
35 |
36 | // Same loading with auto set to audio
37 | await AudioLoader.SetAudioSource(audioURL, audioSource);
38 | }
39 | }
40 | ```
41 |
42 | ## Sample - Loading audio into multiple Audio components
43 |
44 | ``` C#
45 | using Extensions.Unity.AudioLoader;
46 | using Cysharp.Threading.Tasks;
47 |
48 | public class AudioLoaderSample : MonoBehaviour
49 | {
50 | [SerializeField] string audioURL;
51 | [SerializeField] AudioSource audioSource1;
52 | [SerializeField] AudioSource audioSource2;
53 |
54 | void Start()
55 | {
56 | // Loading with auto set to audio
57 | AudioLoader.SetAudioSource(audioURL, audioSource1, audioSource2).Forget();
58 | }
59 | }
60 | ```
61 |
62 | # Cache
63 |
64 | Cache system based on the two layers. First layer is **memory cache**, second is **disk cache**. Each layer could be enabled or disabled. Could be used without caching at all. By default both layers are enabled.
65 |
66 | ## Setup Cache
67 |
68 | - `AudioLoader.settings.useMemoryCache = true;` default value is `true`
69 | - `AudioLoader.settings.useDiskCache = true;` default value is `true`
70 |
71 | Change disk cache folder:
72 |
73 | ``` C#
74 | AudioLoader.settings.diskSaveLocation = Application.persistentDataPath + "/myCustomFolder";
75 | ```
76 |
77 | ## Override Cache
78 |
79 | ``` C#
80 | // Override Memory cache for specific audio
81 | AudioLoader.SaveToMemoryCache(url, audioClip);
82 |
83 | // Take from Memory cache for specific audio file if exists
84 | AudioLoader.LoadFromMemoryCache(url);
85 | ```
86 |
87 | ## Does Cache contain audio
88 |
89 | ``` C#
90 | // Check if any cache contains specific audio file
91 | AudioLoader.CacheContains(url);
92 |
93 | // Check if Memory cache contains specific audio file
94 | AudioLoader.MemoryCacheContains(url);
95 |
96 | // Check if Memory cache contains specific audio file
97 | AudioLoader.DiskCacheContains(url);
98 | ```
99 |
100 | ## Clear Cache
101 |
102 | ``` C#
103 | // Clear memory Memory and Disk cache
104 | AudioLoader.ClearCache();
105 |
106 | // Clear only Memory cache for all audio files
107 | AudioLoader.ClearMemoryCache();
108 |
109 | // Clear only Memory cache for specific audio file
110 | AudioLoader.ClearMemoryCache(url);
111 |
112 | // Clear only Disk cache for all audio files
113 | AudioLoader.ClearDiskCache();
114 |
115 | // Clear only Disk cache for specific audio file
116 | AudioLoader.ClearDiskCache(url);
117 | ```
118 |
119 | # Installation
120 |
121 | - [Install OpenUPM-CLI](https://github.com/openupm/openupm-cli#installation)
122 | - Open command line in Unity project folder
123 | - Run the command
124 |
125 | ``` CLI
126 | openupm add extensions.unity.audioloader
127 | ```
128 |
--------------------------------------------------------------------------------
/Assets/_PackageRoot/README.md.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: d56290d1d0c380c48a6731a5d8f8baea
3 | TextScriptImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/_PackageRoot/Runtime.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: e9390d4a8618b324eb78ce585ce15672
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/_PackageRoot/Runtime/.gitignore:
--------------------------------------------------------------------------------
1 | # Except this file
2 | !.gitignore
--------------------------------------------------------------------------------
/Assets/_PackageRoot/Runtime/AudioLoader.AudioSource.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using UnityEngine;
3 | using Cysharp.Threading.Tasks;
4 |
5 | namespace Extensions.Unity.AudioLoader
6 | {
7 | public static partial class AudioLoader
8 | {
9 | ///
10 | /// Load audio file from URL and set it to the AudioSource component
11 | ///
12 | /// URL to the audio file, web or local
13 | /// AudioSource component from Unity UI
14 | /// Ignore error if the audio file was not found by specified url
15 | /// Returns async task
16 | public static async UniTask SetAudioSource(string url, AudioSource audioSource, bool ignoreImageNotFoundError = false)
17 | {
18 | try
19 | {
20 | if (audioSource == null || audioSource.gameObject == null)
21 | return;
22 |
23 | var audioClip = await LoadAudioClip(url, ignoreImageNotFoundError);
24 | UniTask.Post(() =>
25 | {
26 | if (audioSource == null || GameObject.Equals(audioSource.gameObject, null))
27 | return;
28 | try
29 | {
30 | audioSource.clip = audioClip;
31 | }
32 | catch (Exception e)
33 | {
34 | if (settings.debugLevel <= DebugLevel.Exception)
35 | Debug.LogException(e);
36 | }
37 | });
38 | }
39 | catch (Exception e)
40 | {
41 | if (settings.debugLevel <= DebugLevel.Exception)
42 | Debug.LogException(e);
43 | }
44 | }
45 |
46 | ///
47 | /// Load audio file from URL and set it to the AudioSource components
48 | ///
49 | /// URL to the audio file, web or local
50 | /// Array of AudioSource components from Unity UI
51 | /// Returns async task
52 | public static UniTask SetAudioSource(string url, params AudioSource[] audioSources)
53 | => SetAudioSource(url, false, audioSources);
54 |
55 | ///
56 | /// Load audio file from URL and set it to the AudioSource components
57 | ///
58 | /// URL to the audio file, web or local
59 | /// Ignore error if the audio file was not found by specified url
60 | /// Array of AudioSource components from Unity UI
61 | /// Returns async task
62 | public static async UniTask SetAudioSource(string url, bool ignoreAudioFileNotFoundError = false, params AudioSource[] audioSources)
63 | {
64 | if (audioSources == null)
65 | return;
66 |
67 | var audioClip = await LoadAudioClip(url, ignoreAudioFileNotFoundError);
68 | UniTask.Post(() =>
69 | {
70 | for (var i = 0; i < audioSources.Length; i++)
71 | {
72 | try
73 | {
74 | if (audioSources[i] == null || GameObject.Equals((object)audioSources[i].gameObject, null))
75 | continue;
76 |
77 | audioSources[i].clip = audioClip;
78 | }
79 | catch (Exception e)
80 | {
81 | if (settings.debugLevel <= DebugLevel.Exception)
82 | Debug.LogException(e);
83 | }
84 | }
85 | });
86 | }
87 | }
88 | }
--------------------------------------------------------------------------------
/Assets/_PackageRoot/Runtime/AudioLoader.AudioSource.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 1ab5fc41fc0c58944a7fff156cfb0f7d
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/_PackageRoot/Runtime/AudioLoader.DiskCache.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.IO;
3 | using System.Threading.Tasks;
4 |
5 | namespace Extensions.Unity.AudioLoader
6 | {
7 | public static partial class AudioLoader
8 | {
9 | internal static readonly TaskFactory diskTaskFactory = new TaskFactory(new LimitedConcurrencyLevelTaskScheduler(1));
10 | private static string DiskCachePath(string url) => $"{settings.diskSaveLocation}/I_{url.GetHashCode()}";
11 | private static void SaveDisk(string url, byte[] data)
12 | {
13 | if (!settings.useDiskCache) return;
14 | Directory.CreateDirectory(settings.diskSaveLocation);
15 | Directory.CreateDirectory(Path.GetDirectoryName(DiskCachePath(url)));
16 | File.WriteAllBytes(DiskCachePath(url), data);
17 | }
18 | private static float[] LoadDisk(string url)
19 | {
20 | if (!settings.useDiskCache) return null;
21 | Directory.CreateDirectory(settings.diskSaveLocation);
22 | Directory.CreateDirectory(Path.GetDirectoryName(DiskCachePath(url)));
23 | if (!DiskCacheContains(url)) return null;
24 | return ConvertByteToFloat(File.ReadAllBytes(DiskCachePath(url)));
25 | }
26 | private static Task SaveDiskAsync(string url, byte[] data)
27 | {
28 | if (!settings.useDiskCache)
29 | return Task.CompletedTask;
30 |
31 | return diskTaskFactory.StartNew(() => SaveDisk(url, data));
32 | }
33 | private static Task LoadDiskAsync(string url)
34 | {
35 | if (!settings.useDiskCache)
36 | return Task.FromResult(null);
37 |
38 | return diskTaskFactory.StartNew(() => LoadDisk(url));
39 | }
40 |
41 | ///
42 | /// Check if the AudioClip is cached on disk
43 | ///
44 | /// URL to the audio file, web or local
45 | /// Returns true if AudioClip is cached on disk
46 | public static bool DiskCacheContains(string url) => File.Exists(DiskCachePath(url));
47 |
48 | ///
49 | /// Check if the AudioClip is cached on disk
50 | ///
51 | /// URL to the audio file, web or local
52 | /// Returns true if AudioClip is cached on disk
53 | public static Task DiskCacheExistsAsync(string url)
54 | {
55 | var path = DiskCachePath(url);
56 | return diskTaskFactory.StartNew(() => File.Exists(path));
57 | }
58 |
59 | ///
60 | /// Clear Disk cache for all urls
61 | ///
62 | public static Task ClearDiskCache()
63 | {
64 | return diskTaskFactory.StartNew(() =>
65 | {
66 | if (Directory.Exists(settings.diskSaveLocation))
67 | Directory.Delete(settings.diskSaveLocation, true);
68 | });
69 | }
70 |
71 | ///
72 | /// Clear Disk cache for the given url
73 | ///
74 | /// URL to the audio file, web or local
75 | public static Task ClearDiskCache(string url)
76 | {
77 | var diskPath = DiskCachePath(url);
78 | return diskTaskFactory.StartNew(() =>
79 | {
80 | if (!File.Exists(diskPath)) return;
81 | File.Delete(diskPath);
82 | });
83 | }
84 |
85 | private static float[] ConvertByteToFloat(byte[] array)
86 | {
87 | if ((array?.Length ?? 0) == 0)
88 | return null;
89 |
90 | var floatArr = new float[array.Length / 4];
91 | for (var i = 0; i < floatArr.Length; i++)
92 | {
93 | if (BitConverter.IsLittleEndian)
94 | Array.Reverse(array, i * 4, 4);
95 |
96 | floatArr[i] = BitConverter.ToSingle(array, i * 4) / 0x80000000;
97 | }
98 | return floatArr;
99 | }
100 | }
101 | }
--------------------------------------------------------------------------------
/Assets/_PackageRoot/Runtime/AudioLoader.DiskCache.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 37f6ca60dc662484690e8aafb9b29396
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/_PackageRoot/Runtime/AudioLoader.MemoryCache.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using UnityEngine;
3 |
4 | namespace Extensions.Unity.AudioLoader
5 | {
6 | public static partial class AudioLoader
7 | {
8 | internal static Dictionary memoryAudioClipCache = new Dictionary();
9 |
10 | ///
11 | /// Check if the Memory cache contains AudioClip for the given url
12 | ///
13 | /// URL to the audio file, web or local
14 | /// Returns true if AudioClip exists in Memory cache
15 | public static bool MemoryCacheContains(string url)
16 | {
17 | return memoryAudioClipCache.ContainsKey(url);
18 | }
19 | ///
20 | /// Save AudioClip to Memory cache directly. Should be used for overloading cache system
21 | ///
22 | /// URL to the audio file, web or local
23 | /// AudioClip which should be saved
24 | /// replace existed cached AudioClip if any
25 | public static void SaveToMemoryCache(string url, AudioClip audioClip, bool replace = false)
26 | {
27 | if (!settings.useMemoryCache) return;
28 | if (!replace && memoryAudioClipCache.ContainsKey(url))
29 | {
30 | if (settings.debugLevel <= DebugLevel.Warning)
31 | Debug.LogError($"[AudioLoader] Memory cache already contains key: {url}");
32 | return;
33 | }
34 | memoryAudioClipCache[url] = audioClip;
35 | }
36 | ///
37 | /// Loads directly from Memory cache if exists and allowed
38 | ///
39 | /// URL to the audio file, web or local
40 | /// Returns null if not allowed to use Memory cache or if there is no cached AudioClip
41 | public static AudioClip LoadFromMemoryCache(string url)
42 | {
43 | if (!settings.useMemoryCache) return null;
44 | return memoryAudioClipCache.GetValueOrDefault(url);
45 | }
46 | ///
47 | /// Clear Memory cache for the given url
48 | ///
49 | /// URL to the audio file, web or local
50 | public static void ClearMemoryCache(string url)
51 | {
52 | var cache = memoryAudioClipCache.GetValueOrDefault(url);
53 | UnityEngine.Object.DestroyImmediate(cache);
54 |
55 | memoryAudioClipCache.Remove(url);
56 | }
57 | ///
58 | /// Clear Memory cache for all urls
59 | ///
60 | /// URL to the audio file, web or local
61 | public static void ClearMemoryCache()
62 | {
63 | foreach (var cache in memoryAudioClipCache.Values)
64 | UnityEngine.Object.DestroyImmediate(cache);
65 |
66 | memoryAudioClipCache.Clear();
67 | }
68 | }
69 | }
--------------------------------------------------------------------------------
/Assets/_PackageRoot/Runtime/AudioLoader.MemoryCache.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 92fe858ecc2241949a01324b420b4189
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/_PackageRoot/Runtime/AudioLoader.Settings.cs:
--------------------------------------------------------------------------------
1 | namespace Extensions.Unity.AudioLoader
2 | {
3 | public static partial class AudioLoader
4 | {
5 | public static readonly Settings settings = new Settings();
6 | }
7 | public partial class Settings
8 | {
9 | public DebugLevel debugLevel = DebugLevel.Error;
10 | public bool useMemoryCache = true;
11 | #if UNITY_WEBGL
12 | public bool useDiskCache = false; // default value for WebGL = false
13 | #else
14 | public bool useDiskCache = true; // default value for non WebGL = true
15 | #endif
16 | public string diskSaveLocation { get; set; } = UnityEngine.Application.persistentDataPath + "/audioCache";
17 | }
18 |
19 | public enum DebugLevel
20 | {
21 | Log = 0,
22 | Warning = 1,
23 | Error = 2,
24 | Exception = 3,
25 | None = 4
26 | }
27 | }
--------------------------------------------------------------------------------
/Assets/_PackageRoot/Runtime/AudioLoader.Settings.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 422321dc2704f0c41a88939247240a3c
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/_PackageRoot/Runtime/AudioLoader.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using UnityEngine;
3 | using UnityEngine.Networking;
4 | using Cysharp.Threading.Tasks;
5 | using System.Collections.Generic;
6 | using System.Threading.Tasks;
7 |
8 | namespace Extensions.Unity.AudioLoader
9 | {
10 | public static partial class AudioLoader
11 | {
12 | private static HashSet loadingInProcess = new HashSet();
13 | private static void AddLoading(string url) => loadingInProcess.Add(url);
14 | private static void RemoveLoading(string url) => loadingInProcess.Remove(url);
15 |
16 | ///
17 | /// Initialization of static variables, should be called from main thread at project start
18 | ///
19 | public static void Init()
20 | {
21 | // need get SaveLocation variable in runtime from thread to setup the default static value into it
22 | var temp = settings.diskSaveLocation + settings.diskSaveLocation;
23 | }
24 |
25 | ///
26 | /// Check if the url is loading right now
27 | ///
28 | /// Returns true if the url is loading right now
29 | public static bool IsLoading(string url) => loadingInProcess.Contains(url);
30 |
31 | ///
32 | /// Clear cache from Memory and Disk layers for all urls
33 | ///
34 | public static Task ClearCache()
35 | {
36 | ClearMemoryCache();
37 | return ClearDiskCache();
38 | }
39 |
40 | ///
41 | /// Clear cache from Memory and Disk layers for all urls
42 | ///
43 | /// URL to the audio file, web or local
44 | /// Returns AudioClip
45 | public static bool CacheContains(string url) => MemoryCacheContains(url) || DiskCacheContains(url);
46 |
47 | ///
48 | /// Load audio file from web or local path and return it as AudioClip
49 | ///
50 | /// URL to the audio file, web or local
51 | /// Ignore error if the audio file was not found by specified url
52 | /// Returns AudioClip asynchronously
53 | public static async UniTask LoadAudioClip(string url, bool ignoreAudioFileNotFoundError = false)
54 | {
55 | if (string.IsNullOrEmpty(url))
56 | {
57 | if (settings.debugLevel <= DebugLevel.Error)
58 | Debug.LogError($"[AudioLoader] Empty url. Audio file could not be loaded!");
59 | return null;
60 | }
61 |
62 | if (MemoryCacheContains(url))
63 | {
64 | var audioClip = LoadFromMemoryCache(url);
65 | if (audioClip != null)
66 | return audioClip;
67 | }
68 |
69 | if (IsLoading(url))
70 | {
71 | if (settings.debugLevel <= DebugLevel.Log)
72 | Debug.Log($"[AudioLoader] Waiting while another task is loading the AudioClip url={url}");
73 | await UniTask.WaitWhile(() => IsLoading(url));
74 | return await LoadAudioClip(url, ignoreAudioFileNotFoundError);
75 | }
76 |
77 | AddLoading(url);
78 |
79 | if (settings.debugLevel <= DebugLevel.Log)
80 | Debug.Log($"[AudioLoader] Loading new AudioClip into memory url={url}");
81 | try
82 | {
83 | var cachedAudioFile = await LoadDiskAsync(url);
84 | if (cachedAudioFile != null && cachedAudioFile.Length > 0)
85 | {
86 | await UniTask.SwitchToMainThread();
87 | var audioClip = AudioClip.Create("CachedAudioClip", cachedAudioFile.Length * 4, 1, 48000, false);
88 | audioClip.SetData(cachedAudioFile, 0);
89 | SaveToMemoryCache(url, audioClip, replace: true);
90 | RemoveLoading(url);
91 | return audioClip;
92 | }
93 | }
94 | catch (Exception e)
95 | {
96 | if (settings.debugLevel <= DebugLevel.Exception)
97 | Debug.LogException(e);
98 | }
99 |
100 | UnityWebRequest request = null;
101 | var finished = false;
102 | UniTask.Post(async () =>
103 | {
104 | try
105 | {
106 | request = UnityWebRequestMultimedia.GetAudioClip(url, AudioType.UNKNOWN);
107 | await request.SendWebRequest();
108 | }
109 | catch (Exception e)
110 | {
111 | if (!ignoreAudioFileNotFoundError)
112 | if (settings.debugLevel <= DebugLevel.Exception)
113 | Debug.LogException(e);
114 | }
115 | finally
116 | {
117 | finished = true;
118 | }
119 | });
120 | await UniTask.WaitUntil(() => finished);
121 |
122 | RemoveLoading(url);
123 |
124 | #if UNITY_2020_1_OR_NEWER
125 | var isError = request.result != UnityWebRequest.Result.Success;
126 | #else
127 | var isError = request.isNetworkError || request.isHttpError;
128 | #endif
129 |
130 | if (isError)
131 | {
132 | if (settings.debugLevel <= DebugLevel.Error)
133 | #if UNITY_2020_1_OR_NEWER
134 | Debug.LogError($"[AudioLoader] {request.result} {request.error}: url={url}");
135 | #else
136 | Debug.LogError($"[AudioLoader] {request.error}: url={url}");
137 | #endif
138 | return null;
139 | }
140 | else
141 | {
142 | await SaveDiskAsync(url, request.downloadHandler.data);
143 | var audioClip = ((DownloadHandlerAudioClip)request.downloadHandler).audioClip;
144 | SaveToMemoryCache(url, audioClip, replace: true);
145 | return audioClip;
146 | }
147 | }
148 | }
149 | }
--------------------------------------------------------------------------------
/Assets/_PackageRoot/Runtime/AudioLoader.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: b25129e988fa6764f925e6b3ac08908c
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/_PackageRoot/Runtime/Extensions.Unity.AudioLoader.asmdef:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Extensions.Unity.AudioLoader",
3 | "rootNamespace": "Extensions.Unity.AudioLoader",
4 | "references": [
5 | "UniTask"
6 | ],
7 | "includePlatforms": [],
8 | "excludePlatforms": [],
9 | "allowUnsafeCode": false,
10 | "overrideReferences": false,
11 | "precompiledReferences": [],
12 | "autoReferenced": true,
13 | "defineConstraints": [],
14 | "versionDefines": [],
15 | "noEngineReferences": false
16 | }
--------------------------------------------------------------------------------
/Assets/_PackageRoot/Runtime/Extensions.Unity.AudioLoader.asmdef.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: fe0d97e744422ab41aee68032d2da800
3 | AssemblyDefinitionImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/_PackageRoot/Runtime/LimitedConcurrencyLevelTaskScheduler.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Threading;
5 | using System.Threading.Tasks;
6 | using UnityEngine;
7 |
8 | namespace Extensions.Unity.AudioLoader
9 | {
10 | internal class LimitedConcurrencyLevelTaskScheduler : TaskScheduler
11 | {
12 | /// Whether the current thread is processing work items.
13 | [ThreadStatic]
14 | private static bool _currentThreadIsProcessingItems;
15 | /// The list of tasks to be executed.
16 | private readonly LinkedList _tasks = new LinkedList(); // protected by lock(_tasks)
17 | /// The maximum concurrency level allowed by this scheduler.
18 | private readonly int _maxDegreeOfParallelism;
19 | /// Whether the scheduler is currently processing work items.
20 | private int _delegatesQueuedOrRunning = 0; // protected by lock(_tasks)
21 |
22 | ///
23 | /// Initializes an instance of the LimitedConcurrencyLevelTaskScheduler class with the
24 | /// specified degree of parallelism.
25 | ///
26 | /// The maximum degree of parallelism provided by this scheduler.
27 | public LimitedConcurrencyLevelTaskScheduler(int maxDegreeOfParallelism)
28 | {
29 | if (maxDegreeOfParallelism < 1) throw new ArgumentOutOfRangeException("maxDegreeOfParallelism");
30 | _maxDegreeOfParallelism = maxDegreeOfParallelism;
31 | }
32 |
33 | /// Queues a task to the scheduler.
34 | /// The task to be queued.
35 | protected sealed override void QueueTask(Task task)
36 | {
37 | // Add the task to the list of tasks to be processed. If there aren't enough
38 | // delegates currently queued or running to process tasks, schedule another.
39 | lock (_tasks)
40 | {
41 | _tasks.AddLast(task);
42 | if (_delegatesQueuedOrRunning < _maxDegreeOfParallelism)
43 | {
44 | ++_delegatesQueuedOrRunning;
45 | NotifyThreadPoolOfPendingWork();
46 | }
47 | }
48 | }
49 |
50 | ///
51 | /// Informs the ThreadPool that there's work to be executed for this scheduler.
52 | ///
53 | private void NotifyThreadPoolOfPendingWork()
54 | {
55 | ThreadPool.UnsafeQueueUserWorkItem(_ =>
56 | {
57 | // Note that the current thread is now processing work items.
58 | // This is necessary to enable inlining of tasks into this thread.
59 | _currentThreadIsProcessingItems = true;
60 | try
61 | {
62 | // Process all available items in the queue.
63 | while (true)
64 | {
65 | Task item;
66 | lock (_tasks)
67 | {
68 | // When there are no more items to be processed,
69 | // note that we're done processing, and get out.
70 | if (_tasks.Count == 0)
71 | {
72 | --_delegatesQueuedOrRunning;
73 | break;
74 | }
75 |
76 | // Get the next item from the queue
77 | item = _tasks.First.Value;
78 | _tasks.RemoveFirst();
79 | }
80 |
81 | // Execute the task we pulled out of the queue
82 | base.TryExecuteTask(item);
83 | }
84 | }
85 | catch (Exception e) { Debug.LogException(e); }
86 | // We're done processing items on the current thread
87 | finally { _currentThreadIsProcessingItems = false; }
88 | }, null);
89 | }
90 |
91 | /// Attempts to execute the specified task on the current thread.
92 | /// The task to be executed.
93 | ///
94 | /// Whether the task could be executed on the current thread.
95 | protected sealed override bool TryExecuteTaskInline(Task task, bool taskWasPreviouslyQueued)
96 | {
97 | // If this thread isn't already processing a task, we don't support inlining
98 | if (!_currentThreadIsProcessingItems) return false;
99 |
100 | // If the task was previously queued, remove it from the queue
101 | if (taskWasPreviouslyQueued) TryDequeue(task);
102 |
103 | // Try to run the task.
104 | return base.TryExecuteTask(task);
105 | }
106 |
107 | /// Attempts to remove a previously scheduled task from the scheduler.
108 | /// The task to be removed.
109 | /// Whether the task could be found and removed.
110 | protected sealed override bool TryDequeue(Task task)
111 | {
112 | lock (_tasks) return _tasks.Remove(task);
113 | }
114 |
115 | /// Gets the maximum concurrency level supported by this scheduler.
116 | public sealed override int MaximumConcurrencyLevel { get { return _maxDegreeOfParallelism; } }
117 |
118 | /// Gets an enumerable of the tasks currently scheduled on this scheduler.
119 | /// An enumerable of the tasks currently scheduled.
120 | protected sealed override IEnumerable GetScheduledTasks()
121 | {
122 | bool lockTaken = false;
123 | try
124 | {
125 | Monitor.TryEnter(_tasks, ref lockTaken);
126 | if (lockTaken) return _tasks.ToArray();
127 | else throw new NotSupportedException();
128 | }
129 | catch (Exception e) { Debug.LogException(e); return null; }
130 | finally { if (lockTaken) Monitor.Exit(_tasks); }
131 | }
132 | }
133 | }
134 |
--------------------------------------------------------------------------------
/Assets/_PackageRoot/Runtime/LimitedConcurrencyLevelTaskScheduler.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 02bef5f305ebdbd4ca16ffee123feffa
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/_PackageRoot/Samples~/.gitignore:
--------------------------------------------------------------------------------
1 | # Except this file
2 | !.gitignore
--------------------------------------------------------------------------------
/Assets/_PackageRoot/Tests.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 8425395fe92f9064f99ccb46cd3abf0c
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/_PackageRoot/Tests/Editor.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 4b33dc61e58deba449bb911eb1946b53
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/_PackageRoot/Tests/Editor/.gitignore:
--------------------------------------------------------------------------------
1 | # Except this file
2 | !.gitignore
--------------------------------------------------------------------------------
/Assets/_PackageRoot/Tests/Editor/Extensions.Unity.AudioLoader.Editor.Tests.asmdef:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Extensions.Unity.AudioLoader.Editor.Tests",
3 | "rootNamespace": "Extensions.Unity.AudioLoader.Editor.Tests",
4 | "references": [
5 | "Extensions.Unity.AudioLoader",
6 | "UniTask"
7 | ],
8 | "includePlatforms": [
9 | "Editor"
10 | ],
11 | "excludePlatforms": [],
12 | "allowUnsafeCode": false,
13 | "overrideReferences": false,
14 | "precompiledReferences": [],
15 | "autoReferenced": true,
16 | "defineConstraints": [],
17 | "versionDefines": [],
18 | "noEngineReferences": false
19 | }
--------------------------------------------------------------------------------
/Assets/_PackageRoot/Tests/Editor/Extensions.Unity.AudioLoader.Editor.Tests.asmdef.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 084e3ad4d4e4a224cb1416dc68e24d02
3 | AssemblyDefinitionImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/_PackageRoot/Tests/Editor/TestCache.cs:
--------------------------------------------------------------------------------
1 | using NUnit.Framework;
2 | using Cysharp.Threading.Tasks;
3 | using UnityEngine.TestTools;
4 | using System.Collections;
5 |
6 | namespace Extensions.Unity.AudioLoader.Tests
7 | {
8 | public class TestCache
9 | {
10 | static readonly string[] AudioURLs =
11 | {
12 | "https://github.com/IvanMurzak/Unity-AudioLoader/raw/master/Test%20Audio%20Files/sample.aiff",
13 | "https://github.com/IvanMurzak/Unity-AudioLoader/raw/master/Test%20Audio%20Files/sample.mp3",
14 | "https://github.com/IvanMurzak/Unity-AudioLoader/raw/master/Test%20Audio%20Files/sample.wav"
15 | };
16 |
17 | public async UniTask LoadAudioClip(string url)
18 | {
19 | var AudioClip = await AudioLoader.LoadAudioClip(url);
20 | Assert.IsNotNull(AudioClip);
21 | }
22 |
23 | [UnityTest] public IEnumerator LoadingFromMemoryCache()
24 | {
25 | yield return AudioLoader.ClearCache().AsUniTask().ToCoroutine();
26 | AudioLoader.settings.useMemoryCache = true;
27 | AudioLoader.settings.useDiskCache = false;
28 |
29 | foreach (var imageURL in AudioURLs)
30 | {
31 | yield return LoadAudioClip(imageURL).ToCoroutine();
32 | Assert.IsTrue(AudioLoader.MemoryCacheContains(imageURL));
33 | yield return LoadAudioClip(imageURL).ToCoroutine();
34 | Assert.IsTrue(AudioLoader.MemoryCacheContains(imageURL));
35 | }
36 | }
37 | [UnityTest] public IEnumerator LoadingFromDiskCache()
38 | {
39 | yield return AudioLoader.ClearCache().AsUniTask().ToCoroutine();
40 | AudioLoader.settings.useMemoryCache = false;
41 | AudioLoader.settings.useDiskCache = true;
42 |
43 | foreach (var imageURL in AudioURLs)
44 | {
45 | yield return LoadAudioClip(imageURL).ToCoroutine();
46 | Assert.IsTrue(AudioLoader.DiskCacheContains(imageURL));
47 | yield return LoadAudioClip(imageURL).ToCoroutine();
48 | Assert.IsTrue(AudioLoader.DiskCacheContains(imageURL));
49 | }
50 | }
51 | [UnityTest] public IEnumerator DiskCacheEnable()
52 | {
53 | yield return AudioLoader.ClearCache().AsUniTask().ToCoroutine();
54 | AudioLoader.settings.useDiskCache = true;
55 |
56 | foreach (var imageURL in AudioURLs)
57 | {
58 | yield return LoadAudioClip(imageURL).ToCoroutine();
59 | Assert.IsTrue(AudioLoader.DiskCacheContains(imageURL));
60 | }
61 | }
62 | [UnityTest] public IEnumerator DiskCacheDisable()
63 | {
64 | yield return AudioLoader.ClearCache().AsUniTask().ToCoroutine();
65 | AudioLoader.settings.useDiskCache = false;
66 |
67 | foreach (var imageURL in AudioURLs)
68 | {
69 | yield return LoadAudioClip(imageURL).ToCoroutine();
70 | Assert.IsFalse(AudioLoader.DiskCacheContains(imageURL));
71 | }
72 | }
73 | [UnityTest] public IEnumerator MemoryCacheEnabled()
74 | {
75 | yield return AudioLoader.ClearCache().AsUniTask().ToCoroutine();
76 | AudioLoader.settings.useMemoryCache = true;
77 |
78 | foreach (var imageURL in AudioURLs)
79 | {
80 | yield return LoadAudioClip(imageURL).ToCoroutine();
81 | Assert.IsTrue(AudioLoader.MemoryCacheContains(imageURL));
82 | }
83 | }
84 | [UnityTest] public IEnumerator MemoryCacheDisabled()
85 | {
86 | yield return AudioLoader.ClearCache().AsUniTask().ToCoroutine();
87 | AudioLoader.settings.useMemoryCache = false;
88 |
89 | foreach (var imageURL in AudioURLs)
90 | {
91 | yield return LoadAudioClip(imageURL).ToCoroutine();
92 | Assert.IsFalse(AudioLoader.MemoryCacheContains(imageURL));
93 | }
94 | }
95 | [UnityTest] public IEnumerator ClearDiskCache()
96 | {
97 | yield return AudioLoader.ClearCache().AsUniTask().ToCoroutine();
98 | AudioLoader.settings.useDiskCache = true;
99 |
100 | foreach (var imageURL in AudioURLs)
101 | {
102 | yield return LoadAudioClip(imageURL).ToCoroutine();
103 | Assert.IsTrue(AudioLoader.DiskCacheContains(imageURL));
104 | yield return AudioLoader.ClearDiskCache().AsUniTask().ToCoroutine();
105 | Assert.IsFalse(AudioLoader.DiskCacheContains(imageURL));
106 | }
107 | }
108 | [UnityTest] public IEnumerator ClearMemoryCache()
109 | {
110 | yield return AudioLoader.ClearCache().AsUniTask().ToCoroutine();
111 | AudioLoader.settings.useMemoryCache = true;
112 |
113 | foreach (var imageURL in AudioURLs)
114 | {
115 | yield return LoadAudioClip(imageURL).ToCoroutine();
116 | Assert.IsTrue(AudioLoader.MemoryCacheContains(imageURL));
117 | AudioLoader.ClearMemoryCache(imageURL);
118 | Assert.IsFalse(AudioLoader.MemoryCacheContains(imageURL));
119 | }
120 | }
121 | [UnityTest] public IEnumerator ClearDiskCacheAll()
122 | {
123 | yield return AudioLoader.ClearCache().AsUniTask().ToCoroutine();
124 | AudioLoader.settings.useDiskCache = true;
125 |
126 | foreach (var imageURL in AudioURLs)
127 | {
128 | yield return LoadAudioClip(imageURL).ToCoroutine();
129 | Assert.IsTrue(AudioLoader.DiskCacheContains(imageURL));
130 | }
131 | yield return AudioLoader.ClearDiskCache().AsUniTask().ToCoroutine();
132 | foreach (var imageURL in AudioURLs)
133 | Assert.IsFalse(AudioLoader.DiskCacheContains(imageURL));
134 | }
135 | [UnityTest] public IEnumerator ClearMemoryCacheAll()
136 | {
137 | yield return AudioLoader.ClearCache().AsUniTask().ToCoroutine();
138 | AudioLoader.settings.useMemoryCache = true;
139 |
140 | foreach (var imageURL in AudioURLs)
141 | {
142 | yield return LoadAudioClip(imageURL).ToCoroutine();
143 | Assert.IsTrue(AudioLoader.MemoryCacheContains(imageURL));
144 | }
145 | AudioLoader.ClearMemoryCache();
146 | foreach (var imageURL in AudioURLs)
147 | Assert.IsFalse(AudioLoader.MemoryCacheContains(imageURL));
148 | }
149 | }
150 | }
--------------------------------------------------------------------------------
/Assets/_PackageRoot/Tests/Editor/TestCache.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: b3efd94523455e344bb695b4f4d58e89
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/_PackageRoot/Tests/Editor/TestLoading.cs:
--------------------------------------------------------------------------------
1 | using NUnit.Framework;
2 | using Cysharp.Threading.Tasks;
3 | using UnityEngine.TestTools;
4 | using System.Collections;
5 |
6 | namespace Extensions.Unity.AudioLoader.Tests
7 | {
8 | public class TestLoading
9 | {
10 | static readonly string[] AudioURLs =
11 | {
12 | "https://github.com/IvanMurzak/Unity-AudioLoader/raw/master/Test%20Audio%20Files/sample.aiff",
13 | "https://github.com/IvanMurzak/Unity-AudioLoader/raw/master/Test%20Audio%20Files/sample.mp3",
14 | "https://github.com/IvanMurzak/Unity-AudioLoader/raw/master/Test%20Audio%20Files/sample.wav"
15 | };
16 |
17 | public async UniTask LoadAudioClip(string url)
18 | {
19 | var audioClip = await AudioLoader.LoadAudioClip(url);
20 | Assert.IsNotNull(audioClip);
21 | }
22 |
23 | [UnityTest] public IEnumerator LoadAudioClipCacheMemoryDisk()
24 | {
25 | yield return AudioLoader.ClearCache().AsUniTask().ToCoroutine();
26 | AudioLoader.settings.useDiskCache = true;
27 | AudioLoader.settings.useMemoryCache = true;
28 |
29 | foreach (var imageURL in AudioURLs)
30 | yield return LoadAudioClip(imageURL).ToCoroutine();
31 | }
32 | [UnityTest] public IEnumerator LoadAudioClipsCacheMemory()
33 | {
34 | yield return AudioLoader.ClearCache().AsUniTask().ToCoroutine();
35 | AudioLoader.settings.useDiskCache = false;
36 | AudioLoader.settings.useMemoryCache = true;
37 |
38 | foreach (var imageURL in AudioURLs)
39 | yield return LoadAudioClip(imageURL).ToCoroutine();
40 | }
41 | [UnityTest] public IEnumerator LoadAudioClipsCacheDisk()
42 | {
43 | yield return AudioLoader.ClearCache().AsUniTask().ToCoroutine();
44 | AudioLoader.settings.useDiskCache = true;
45 | AudioLoader.settings.useMemoryCache = false;
46 |
47 | foreach (var imageURL in AudioURLs)
48 | yield return LoadAudioClip(imageURL).ToCoroutine();
49 | }
50 | [UnityTest] public IEnumerator LoadAudioClipsNoCache()
51 | {
52 | yield return AudioLoader.ClearCache().AsUniTask().ToCoroutine();
53 | AudioLoader.settings.useDiskCache = false;
54 | AudioLoader.settings.useMemoryCache = false;
55 |
56 | foreach (var imageURL in AudioURLs)
57 | yield return LoadAudioClip(imageURL).ToCoroutine();
58 | }
59 | }
60 | }
--------------------------------------------------------------------------------
/Assets/_PackageRoot/Tests/Editor/TestLoading.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: b24e70b2ab6f7c04398eb855aab28704
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/_PackageRoot/Tests/Runtime.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: b3f29fd130eb4ca4091eb7be7bfbdb7c
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/_PackageRoot/Tests/Runtime/.gitignore:
--------------------------------------------------------------------------------
1 | # Except this file
2 | !.gitignore
--------------------------------------------------------------------------------
/Assets/_PackageRoot/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "extensions.unity.audioloader",
3 | "displayName": "Audio Loader",
4 | "author": {
5 | "name": "Ivan Murzak",
6 | "url": "https://github.com/IvanMurzak"
7 | },
8 | "version": "1.0.4",
9 | "unity": "2019.2",
10 | "description": "Asynchronous audio loading from remote or local destination. It has two layers of configurable cache system: RAM and Disk.",
11 | "dependencies": {
12 | "com.cysharp.unitask": "2.3.3"
13 | },
14 | "scopedRegistries": [
15 | {
16 | "name": "package.openupm.com",
17 | "url": "https://package.openupm.com",
18 | "scopes": [
19 | "com.cysharp.unitask",
20 | "com.openupm"
21 | ]
22 | }
23 | ]
24 | }
25 |
--------------------------------------------------------------------------------
/Assets/_PackageRoot/package.json.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 043e4e033788a68478756f5c9513ccc6
3 | TextScriptImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Commands/NPM--AddUser.bat:
--------------------------------------------------------------------------------
1 | cd ..\Assets\_PackageRoot
2 | npm adduser
--------------------------------------------------------------------------------
/Commands/NPM--CopyREADME.bat:
--------------------------------------------------------------------------------
1 | xcopy ..\README.md ..\Assets\_PackageRoot\README.md* /Y
2 | xcopy ..\README.md ..\Assets\_PackageRoot\Documentation~\README.md* /Y
--------------------------------------------------------------------------------
/Commands/NPM--UpdateDependencies.bat:
--------------------------------------------------------------------------------
1 | call npm --prefix ..\Assets\_PackageRoot update
2 | del /f ..\Assets\_PackageRoot\package-lock.*
3 | pause
--------------------------------------------------------------------------------
/Commands/NPM--VersionMajor.bat:
--------------------------------------------------------------------------------
1 | cd ..\Assets\_PackageRoot
2 | npm version major
3 | pause
--------------------------------------------------------------------------------
/Commands/NPM--VersionMinor.bat:
--------------------------------------------------------------------------------
1 | cd ..\Assets\_PackageRoot
2 | npm version minor
3 | pause
--------------------------------------------------------------------------------
/Commands/NPM--VersionPatch.bat:
--------------------------------------------------------------------------------
1 | cd ..\Assets\_PackageRoot
2 | npm version patch
3 | pause
--------------------------------------------------------------------------------
/Commands/[!!!]--GitHub--Release.bat:
--------------------------------------------------------------------------------
1 | cd ..\Assets\_PackageRoot
2 | @echo off
3 | echo ----------------------------------------------------
4 | echo Executing "npm pkg get version"
5 | FOR /F "tokens=* USEBACKQ" %%F IN (`npm pkg get version`) DO (
6 | SET RawVersion=%%F
7 | )
8 | echo Version of current package is extracted: %RawVersion%
9 | SET CleanVersion=%RawVersion:~1,-1%
10 | echo Current version: %CleanVersion%
11 |
12 | git push -u origin HEAD
13 |
14 | echo ----------------------------------------------------
15 | cd ..\..\
16 | echo Creating GitHub release with tag=%CleanVersion%
17 | @echo on
18 | gh release create %CleanVersion% --generate-notes --title %CleanVersion%
19 | gh release view %CleanVersion% --web
20 | @echo off
21 | echo ----------------------------------------------------
22 |
23 | pause
24 |
--------------------------------------------------------------------------------
/Commands/[!!!]--NPM--Publish.bat:
--------------------------------------------------------------------------------
1 | xcopy ..\README.md ..\Assets\_PackageRoot\README.md* /Y
2 | xcopy ..\README.md ..\Assets\_PackageRoot\Documentation~\README.md* /Y
3 | cd ..\Assets\_PackageRoot
4 | npm publish
5 | pause
--------------------------------------------------------------------------------
/Commands/[!]--GitHub--DraftRelease.bat:
--------------------------------------------------------------------------------
1 | cd ..\Assets\_PackageRoot
2 | @echo off
3 | echo ----------------------------------------------------
4 | echo Executing "npm pkg get version"
5 | FOR /F "tokens=* USEBACKQ" %%F IN (`npm pkg get version`) DO (
6 | SET RawVersion=%%F
7 | )
8 | echo Version of current package is extracted: %RawVersion%
9 | SET CleanVersion=%RawVersion:~1,-1%
10 | echo Current version: %CleanVersion%
11 |
12 | git push -u origin HEAD
13 |
14 | echo ----------------------------------------------------
15 | cd ..\..\
16 | echo Creating GitHub release with tag=%CleanVersion%
17 | @echo on
18 | gh release create %CleanVersion% --draft --generate-notes --title %CleanVersion%
19 | gh repo view --web
20 | @echo off
21 | echo ----------------------------------------------------
22 |
23 | pause
24 |
--------------------------------------------------------------------------------
/Header-Full.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IvanMurzak/Unity-AudioLoader/432c13650ce3567ca9778fbb0fd7553a9e71563d/Header-Full.png
--------------------------------------------------------------------------------
/Header.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IvanMurzak/Unity-AudioLoader/432c13650ce3567ca9778fbb0fd7553a9e71563d/Header.jpg
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2023 Ivan Murzak
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/Packages/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "dependencies": {
3 | "com.cysharp.unitask": "2.3.3",
4 | "com.unity.ide.visualstudio": "2.0.20",
5 | "com.unity.test-framework": "1.1.33",
6 | "com.unity.ugui": "1.0.0",
7 | "com.unity.modules.ai": "1.0.0",
8 | "com.unity.modules.androidjni": "1.0.0",
9 | "com.unity.modules.animation": "1.0.0",
10 | "com.unity.modules.assetbundle": "1.0.0",
11 | "com.unity.modules.audio": "1.0.0",
12 | "com.unity.modules.cloth": "1.0.0",
13 | "com.unity.modules.director": "1.0.0",
14 | "com.unity.modules.imageconversion": "1.0.0",
15 | "com.unity.modules.imgui": "1.0.0",
16 | "com.unity.modules.jsonserialize": "1.0.0",
17 | "com.unity.modules.particlesystem": "1.0.0",
18 | "com.unity.modules.physics": "1.0.0",
19 | "com.unity.modules.physics2d": "1.0.0",
20 | "com.unity.modules.screencapture": "1.0.0",
21 | "com.unity.modules.terrain": "1.0.0",
22 | "com.unity.modules.terrainphysics": "1.0.0",
23 | "com.unity.modules.tilemap": "1.0.0",
24 | "com.unity.modules.ui": "1.0.0",
25 | "com.unity.modules.uielements": "1.0.0",
26 | "com.unity.modules.umbra": "1.0.0",
27 | "com.unity.modules.unityanalytics": "1.0.0",
28 | "com.unity.modules.unitywebrequest": "1.0.0",
29 | "com.unity.modules.unitywebrequestassetbundle": "1.0.0",
30 | "com.unity.modules.unitywebrequestaudio": "1.0.0",
31 | "com.unity.modules.unitywebrequesttexture": "1.0.0",
32 | "com.unity.modules.unitywebrequestwww": "1.0.0",
33 | "com.unity.modules.vehicles": "1.0.0",
34 | "com.unity.modules.video": "1.0.0",
35 | "com.unity.modules.vr": "1.0.0",
36 | "com.unity.modules.wind": "1.0.0",
37 | "com.unity.modules.xr": "1.0.0"
38 | },
39 | "scopedRegistries": [
40 | {
41 | "name": "package.openupm.com",
42 | "url": "https://package.openupm.com",
43 | "scopes": [
44 | "com.cysharp.unitask",
45 | "com.openupm"
46 | ]
47 | }
48 | ]
49 | }
50 |
--------------------------------------------------------------------------------
/Packages/packages-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "dependencies": {
3 | "com.cysharp.unitask": {
4 | "version": "2.3.3",
5 | "depth": 0,
6 | "source": "registry",
7 | "dependencies": {},
8 | "url": "https://package.openupm.com"
9 | },
10 | "com.unity.ext.nunit": {
11 | "version": "1.0.6",
12 | "depth": 1,
13 | "source": "registry",
14 | "dependencies": {},
15 | "url": "https://packages.unity.com"
16 | },
17 | "com.unity.ide.visualstudio": {
18 | "version": "2.0.20",
19 | "depth": 0,
20 | "source": "registry",
21 | "dependencies": {
22 | "com.unity.test-framework": "1.1.9"
23 | },
24 | "url": "https://packages.unity.com"
25 | },
26 | "com.unity.test-framework": {
27 | "version": "1.1.33",
28 | "depth": 0,
29 | "source": "registry",
30 | "dependencies": {
31 | "com.unity.ext.nunit": "1.0.6",
32 | "com.unity.modules.imgui": "1.0.0",
33 | "com.unity.modules.jsonserialize": "1.0.0"
34 | },
35 | "url": "https://packages.unity.com"
36 | },
37 | "com.unity.ugui": {
38 | "version": "1.0.0",
39 | "depth": 0,
40 | "source": "builtin",
41 | "dependencies": {
42 | "com.unity.modules.ui": "1.0.0",
43 | "com.unity.modules.imgui": "1.0.0"
44 | }
45 | },
46 | "com.unity.modules.ai": {
47 | "version": "1.0.0",
48 | "depth": 0,
49 | "source": "builtin",
50 | "dependencies": {}
51 | },
52 | "com.unity.modules.androidjni": {
53 | "version": "1.0.0",
54 | "depth": 0,
55 | "source": "builtin",
56 | "dependencies": {}
57 | },
58 | "com.unity.modules.animation": {
59 | "version": "1.0.0",
60 | "depth": 0,
61 | "source": "builtin",
62 | "dependencies": {}
63 | },
64 | "com.unity.modules.assetbundle": {
65 | "version": "1.0.0",
66 | "depth": 0,
67 | "source": "builtin",
68 | "dependencies": {}
69 | },
70 | "com.unity.modules.audio": {
71 | "version": "1.0.0",
72 | "depth": 0,
73 | "source": "builtin",
74 | "dependencies": {}
75 | },
76 | "com.unity.modules.cloth": {
77 | "version": "1.0.0",
78 | "depth": 0,
79 | "source": "builtin",
80 | "dependencies": {
81 | "com.unity.modules.physics": "1.0.0"
82 | }
83 | },
84 | "com.unity.modules.director": {
85 | "version": "1.0.0",
86 | "depth": 0,
87 | "source": "builtin",
88 | "dependencies": {
89 | "com.unity.modules.audio": "1.0.0",
90 | "com.unity.modules.animation": "1.0.0"
91 | }
92 | },
93 | "com.unity.modules.imageconversion": {
94 | "version": "1.0.0",
95 | "depth": 0,
96 | "source": "builtin",
97 | "dependencies": {}
98 | },
99 | "com.unity.modules.imgui": {
100 | "version": "1.0.0",
101 | "depth": 0,
102 | "source": "builtin",
103 | "dependencies": {}
104 | },
105 | "com.unity.modules.jsonserialize": {
106 | "version": "1.0.0",
107 | "depth": 0,
108 | "source": "builtin",
109 | "dependencies": {}
110 | },
111 | "com.unity.modules.particlesystem": {
112 | "version": "1.0.0",
113 | "depth": 0,
114 | "source": "builtin",
115 | "dependencies": {}
116 | },
117 | "com.unity.modules.physics": {
118 | "version": "1.0.0",
119 | "depth": 0,
120 | "source": "builtin",
121 | "dependencies": {}
122 | },
123 | "com.unity.modules.physics2d": {
124 | "version": "1.0.0",
125 | "depth": 0,
126 | "source": "builtin",
127 | "dependencies": {}
128 | },
129 | "com.unity.modules.screencapture": {
130 | "version": "1.0.0",
131 | "depth": 0,
132 | "source": "builtin",
133 | "dependencies": {
134 | "com.unity.modules.imageconversion": "1.0.0"
135 | }
136 | },
137 | "com.unity.modules.subsystems": {
138 | "version": "1.0.0",
139 | "depth": 1,
140 | "source": "builtin",
141 | "dependencies": {
142 | "com.unity.modules.jsonserialize": "1.0.0"
143 | }
144 | },
145 | "com.unity.modules.terrain": {
146 | "version": "1.0.0",
147 | "depth": 0,
148 | "source": "builtin",
149 | "dependencies": {}
150 | },
151 | "com.unity.modules.terrainphysics": {
152 | "version": "1.0.0",
153 | "depth": 0,
154 | "source": "builtin",
155 | "dependencies": {
156 | "com.unity.modules.physics": "1.0.0",
157 | "com.unity.modules.terrain": "1.0.0"
158 | }
159 | },
160 | "com.unity.modules.tilemap": {
161 | "version": "1.0.0",
162 | "depth": 0,
163 | "source": "builtin",
164 | "dependencies": {
165 | "com.unity.modules.physics2d": "1.0.0"
166 | }
167 | },
168 | "com.unity.modules.ui": {
169 | "version": "1.0.0",
170 | "depth": 0,
171 | "source": "builtin",
172 | "dependencies": {}
173 | },
174 | "com.unity.modules.uielements": {
175 | "version": "1.0.0",
176 | "depth": 0,
177 | "source": "builtin",
178 | "dependencies": {
179 | "com.unity.modules.ui": "1.0.0",
180 | "com.unity.modules.imgui": "1.0.0",
181 | "com.unity.modules.jsonserialize": "1.0.0"
182 | }
183 | },
184 | "com.unity.modules.umbra": {
185 | "version": "1.0.0",
186 | "depth": 0,
187 | "source": "builtin",
188 | "dependencies": {}
189 | },
190 | "com.unity.modules.unityanalytics": {
191 | "version": "1.0.0",
192 | "depth": 0,
193 | "source": "builtin",
194 | "dependencies": {
195 | "com.unity.modules.unitywebrequest": "1.0.0",
196 | "com.unity.modules.jsonserialize": "1.0.0"
197 | }
198 | },
199 | "com.unity.modules.unitywebrequest": {
200 | "version": "1.0.0",
201 | "depth": 0,
202 | "source": "builtin",
203 | "dependencies": {}
204 | },
205 | "com.unity.modules.unitywebrequestassetbundle": {
206 | "version": "1.0.0",
207 | "depth": 0,
208 | "source": "builtin",
209 | "dependencies": {
210 | "com.unity.modules.assetbundle": "1.0.0",
211 | "com.unity.modules.unitywebrequest": "1.0.0"
212 | }
213 | },
214 | "com.unity.modules.unitywebrequestaudio": {
215 | "version": "1.0.0",
216 | "depth": 0,
217 | "source": "builtin",
218 | "dependencies": {
219 | "com.unity.modules.unitywebrequest": "1.0.0",
220 | "com.unity.modules.audio": "1.0.0"
221 | }
222 | },
223 | "com.unity.modules.unitywebrequesttexture": {
224 | "version": "1.0.0",
225 | "depth": 0,
226 | "source": "builtin",
227 | "dependencies": {
228 | "com.unity.modules.unitywebrequest": "1.0.0",
229 | "com.unity.modules.imageconversion": "1.0.0"
230 | }
231 | },
232 | "com.unity.modules.unitywebrequestwww": {
233 | "version": "1.0.0",
234 | "depth": 0,
235 | "source": "builtin",
236 | "dependencies": {
237 | "com.unity.modules.unitywebrequest": "1.0.0",
238 | "com.unity.modules.unitywebrequestassetbundle": "1.0.0",
239 | "com.unity.modules.unitywebrequestaudio": "1.0.0",
240 | "com.unity.modules.audio": "1.0.0",
241 | "com.unity.modules.assetbundle": "1.0.0",
242 | "com.unity.modules.imageconversion": "1.0.0"
243 | }
244 | },
245 | "com.unity.modules.vehicles": {
246 | "version": "1.0.0",
247 | "depth": 0,
248 | "source": "builtin",
249 | "dependencies": {
250 | "com.unity.modules.physics": "1.0.0"
251 | }
252 | },
253 | "com.unity.modules.video": {
254 | "version": "1.0.0",
255 | "depth": 0,
256 | "source": "builtin",
257 | "dependencies": {
258 | "com.unity.modules.audio": "1.0.0",
259 | "com.unity.modules.ui": "1.0.0",
260 | "com.unity.modules.unitywebrequest": "1.0.0"
261 | }
262 | },
263 | "com.unity.modules.vr": {
264 | "version": "1.0.0",
265 | "depth": 0,
266 | "source": "builtin",
267 | "dependencies": {
268 | "com.unity.modules.jsonserialize": "1.0.0",
269 | "com.unity.modules.physics": "1.0.0",
270 | "com.unity.modules.xr": "1.0.0"
271 | }
272 | },
273 | "com.unity.modules.wind": {
274 | "version": "1.0.0",
275 | "depth": 0,
276 | "source": "builtin",
277 | "dependencies": {}
278 | },
279 | "com.unity.modules.xr": {
280 | "version": "1.0.0",
281 | "depth": 0,
282 | "source": "builtin",
283 | "dependencies": {
284 | "com.unity.modules.physics": "1.0.0",
285 | "com.unity.modules.jsonserialize": "1.0.0",
286 | "com.unity.modules.subsystems": "1.0.0"
287 | }
288 | }
289 | }
290 | }
291 |
--------------------------------------------------------------------------------
/ProjectSettings/AudioManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!11 &1
4 | AudioManager:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 2
7 | m_Volume: 1
8 | Rolloff Scale: 1
9 | Doppler Factor: 1
10 | Default Speaker Mode: 2
11 | m_SampleRate: 0
12 | m_DSPBufferSize: 1024
13 | m_VirtualVoiceCount: 512
14 | m_RealVoiceCount: 32
15 | m_EnableOutputSuspension: 1
16 | m_SpatializerPlugin:
17 | m_AmbisonicDecoderPlugin:
18 | m_DisableAudio: 0
19 | m_VirtualizeEffects: 1
20 | m_RequestedDSPBufferSize: 0
21 |
--------------------------------------------------------------------------------
/ProjectSettings/ClusterInputManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!236 &1
4 | ClusterInputManager:
5 | m_ObjectHideFlags: 0
6 | m_Inputs: []
7 |
--------------------------------------------------------------------------------
/ProjectSettings/DynamicsManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!55 &1
4 | PhysicsManager:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 14
7 | m_Gravity: {x: 0, y: -9.81, z: 0}
8 | m_DefaultMaterial: {fileID: 0}
9 | m_BounceThreshold: 2
10 | m_DefaultMaxDepenetrationVelocity: 10
11 | m_SleepThreshold: 0.005
12 | m_DefaultContactOffset: 0.01
13 | m_DefaultSolverIterations: 6
14 | m_DefaultSolverVelocityIterations: 1
15 | m_QueriesHitBackfaces: 0
16 | m_QueriesHitTriggers: 1
17 | m_EnableAdaptiveForce: 0
18 | m_ClothInterCollisionDistance: 0.1
19 | m_ClothInterCollisionStiffness: 0.2
20 | m_ContactsGeneration: 1
21 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
22 | m_SimulationMode: 0
23 | m_AutoSyncTransforms: 0
24 | m_ReuseCollisionCallbacks: 0
25 | m_InvokeCollisionCallbacks: 1
26 | m_ClothInterCollisionSettingsToggle: 0
27 | m_ClothGravity: {x: 0, y: -9.81, z: 0}
28 | m_ContactPairsMode: 0
29 | m_BroadphaseType: 0
30 | m_WorldBounds:
31 | m_Center: {x: 0, y: 0, z: 0}
32 | m_Extent: {x: 250, y: 250, z: 250}
33 | m_WorldSubdivisions: 8
34 | m_FrictionType: 0
35 | m_EnableEnhancedDeterminism: 0
36 | m_EnableUnifiedHeightmaps: 1
37 | m_ImprovedPatchFriction: 0
38 | m_SolverType: 0
39 | m_DefaultMaxAngularSpeed: 50
40 |
--------------------------------------------------------------------------------
/ProjectSettings/EditorBuildSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!1045 &1
4 | EditorBuildSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 2
7 | m_Scenes: []
8 | m_configObjects: {}
9 |
--------------------------------------------------------------------------------
/ProjectSettings/EditorSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!159 &1
4 | EditorSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 12
7 | m_SerializationMode: 2
8 | m_LineEndingsForNewScripts: 2
9 | m_DefaultBehaviorMode: 0
10 | m_PrefabRegularEnvironment: {fileID: 0}
11 | m_PrefabUIEnvironment: {fileID: 0}
12 | m_SpritePackerMode: 0
13 | m_SpritePackerCacheSize: 10
14 | m_SpritePackerPaddingPower: 1
15 | m_Bc7TextureCompressor: 0
16 | m_EtcTextureCompressorBehavior: 1
17 | m_EtcTextureFastCompressor: 1
18 | m_EtcTextureNormalCompressor: 2
19 | m_EtcTextureBestCompressor: 4
20 | m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef;asmref;rsp;java;cpp;c;mm;m;h
21 | m_ProjectGenerationRootNamespace:
22 | m_EnableTextureStreamingInEditMode: 1
23 | m_EnableTextureStreamingInPlayMode: 1
24 | m_EnableEditorAsyncCPUTextureLoading: 0
25 | m_AsyncShaderCompilation: 1
26 | m_PrefabModeAllowAutoSave: 1
27 | m_EnterPlayModeOptionsEnabled: 0
28 | m_EnterPlayModeOptions: 3
29 | m_GameObjectNamingDigits: 1
30 | m_GameObjectNamingScheme: 0
31 | m_AssetNamingUsesSpace: 1
32 | m_InspectorUseIMGUIDefaultInspector: 0
33 | m_UseLegacyProbeSampleCount: 0
34 | m_SerializeInlineMappingsOnOneLine: 1
35 | m_DisableCookiesInLightmapper: 0
36 | m_AssetPipelineMode: 1
37 | m_RefreshImportMode: 0
38 | m_CacheServerMode: 0
39 | m_CacheServerEndpoint:
40 | m_CacheServerNamespacePrefix: default
41 | m_CacheServerEnableDownload: 1
42 | m_CacheServerEnableUpload: 1
43 | m_CacheServerEnableAuth: 0
44 | m_CacheServerEnableTls: 0
45 | m_CacheServerValidationMode: 2
46 | m_CacheServerDownloadBatchSize: 128
47 | m_EnableEnlightenBakedGI: 0
48 |
--------------------------------------------------------------------------------
/ProjectSettings/GraphicsSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!30 &1
4 | GraphicsSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 15
7 | m_Deferred:
8 | m_Mode: 1
9 | m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0}
10 | m_DeferredReflections:
11 | m_Mode: 1
12 | m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0}
13 | m_ScreenSpaceShadows:
14 | m_Mode: 1
15 | m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0}
16 | m_DepthNormals:
17 | m_Mode: 1
18 | m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0}
19 | m_MotionVectors:
20 | m_Mode: 1
21 | m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0}
22 | m_LightHalo:
23 | m_Mode: 1
24 | m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0}
25 | m_LensFlare:
26 | m_Mode: 1
27 | m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0}
28 | m_VideoShadersIncludeMode: 2
29 | m_AlwaysIncludedShaders:
30 | - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0}
31 | - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0}
32 | - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0}
33 | - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0}
34 | - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0}
35 | - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0}
36 | - {fileID: 10783, guid: 0000000000000000f000000000000000, type: 0}
37 | m_PreloadedShaders: []
38 | m_PreloadShadersBatchTimeLimit: -1
39 | m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
40 | m_CustomRenderPipeline: {fileID: 0}
41 | m_TransparencySortMode: 0
42 | m_TransparencySortAxis: {x: 0, y: 0, z: 1}
43 | m_DefaultRenderingPath: 1
44 | m_DefaultMobileRenderingPath: 1
45 | m_TierSettings: []
46 | m_LightmapStripping: 0
47 | m_FogStripping: 0
48 | m_InstancingStripping: 0
49 | m_BrgStripping: 0
50 | m_LightmapKeepPlain: 1
51 | m_LightmapKeepDirCombined: 1
52 | m_LightmapKeepDynamicPlain: 1
53 | m_LightmapKeepDynamicDirCombined: 1
54 | m_LightmapKeepShadowMask: 1
55 | m_LightmapKeepSubtractive: 1
56 | m_FogKeepLinear: 1
57 | m_FogKeepExp: 1
58 | m_FogKeepExp2: 1
59 | m_AlbedoSwatchInfos: []
60 | m_LightsUseLinearIntensity: 0
61 | m_LightsUseColorTemperature: 0
62 | m_DefaultRenderingLayerMask: 1
63 | m_LogWhenShaderIsCompiled: 0
64 | m_SRPDefaultSettings: {}
65 | m_LightProbeOutsideHullStrategy: 1
66 | m_CameraRelativeLightCulling: 0
67 | m_CameraRelativeShadowCulling: 0
68 |
--------------------------------------------------------------------------------
/ProjectSettings/InputManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!13 &1
4 | InputManager:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 2
7 | m_Axes:
8 | - serializedVersion: 3
9 | m_Name: Horizontal
10 | descriptiveName:
11 | descriptiveNegativeName:
12 | negativeButton: left
13 | positiveButton: right
14 | altNegativeButton: a
15 | altPositiveButton: d
16 | gravity: 3
17 | dead: 0.001
18 | sensitivity: 3
19 | snap: 1
20 | invert: 0
21 | type: 0
22 | axis: 0
23 | joyNum: 0
24 | - serializedVersion: 3
25 | m_Name: Vertical
26 | descriptiveName:
27 | descriptiveNegativeName:
28 | negativeButton: down
29 | positiveButton: up
30 | altNegativeButton: s
31 | altPositiveButton: w
32 | gravity: 3
33 | dead: 0.001
34 | sensitivity: 3
35 | snap: 1
36 | invert: 0
37 | type: 0
38 | axis: 0
39 | joyNum: 0
40 | - serializedVersion: 3
41 | m_Name: Fire1
42 | descriptiveName:
43 | descriptiveNegativeName:
44 | negativeButton:
45 | positiveButton: left ctrl
46 | altNegativeButton:
47 | altPositiveButton: mouse 0
48 | gravity: 1000
49 | dead: 0.001
50 | sensitivity: 1000
51 | snap: 0
52 | invert: 0
53 | type: 0
54 | axis: 0
55 | joyNum: 0
56 | - serializedVersion: 3
57 | m_Name: Fire2
58 | descriptiveName:
59 | descriptiveNegativeName:
60 | negativeButton:
61 | positiveButton: left alt
62 | altNegativeButton:
63 | altPositiveButton: mouse 1
64 | gravity: 1000
65 | dead: 0.001
66 | sensitivity: 1000
67 | snap: 0
68 | invert: 0
69 | type: 0
70 | axis: 0
71 | joyNum: 0
72 | - serializedVersion: 3
73 | m_Name: Fire3
74 | descriptiveName:
75 | descriptiveNegativeName:
76 | negativeButton:
77 | positiveButton: left shift
78 | altNegativeButton:
79 | altPositiveButton: mouse 2
80 | gravity: 1000
81 | dead: 0.001
82 | sensitivity: 1000
83 | snap: 0
84 | invert: 0
85 | type: 0
86 | axis: 0
87 | joyNum: 0
88 | - serializedVersion: 3
89 | m_Name: Jump
90 | descriptiveName:
91 | descriptiveNegativeName:
92 | negativeButton:
93 | positiveButton: space
94 | altNegativeButton:
95 | altPositiveButton:
96 | gravity: 1000
97 | dead: 0.001
98 | sensitivity: 1000
99 | snap: 0
100 | invert: 0
101 | type: 0
102 | axis: 0
103 | joyNum: 0
104 | - serializedVersion: 3
105 | m_Name: Mouse X
106 | descriptiveName:
107 | descriptiveNegativeName:
108 | negativeButton:
109 | positiveButton:
110 | altNegativeButton:
111 | altPositiveButton:
112 | gravity: 0
113 | dead: 0
114 | sensitivity: 0.1
115 | snap: 0
116 | invert: 0
117 | type: 1
118 | axis: 0
119 | joyNum: 0
120 | - serializedVersion: 3
121 | m_Name: Mouse Y
122 | descriptiveName:
123 | descriptiveNegativeName:
124 | negativeButton:
125 | positiveButton:
126 | altNegativeButton:
127 | altPositiveButton:
128 | gravity: 0
129 | dead: 0
130 | sensitivity: 0.1
131 | snap: 0
132 | invert: 0
133 | type: 1
134 | axis: 1
135 | joyNum: 0
136 | - serializedVersion: 3
137 | m_Name: Mouse ScrollWheel
138 | descriptiveName:
139 | descriptiveNegativeName:
140 | negativeButton:
141 | positiveButton:
142 | altNegativeButton:
143 | altPositiveButton:
144 | gravity: 0
145 | dead: 0
146 | sensitivity: 0.1
147 | snap: 0
148 | invert: 0
149 | type: 1
150 | axis: 2
151 | joyNum: 0
152 | - serializedVersion: 3
153 | m_Name: Horizontal
154 | descriptiveName:
155 | descriptiveNegativeName:
156 | negativeButton:
157 | positiveButton:
158 | altNegativeButton:
159 | altPositiveButton:
160 | gravity: 0
161 | dead: 0.19
162 | sensitivity: 1
163 | snap: 0
164 | invert: 0
165 | type: 2
166 | axis: 0
167 | joyNum: 0
168 | - serializedVersion: 3
169 | m_Name: Vertical
170 | descriptiveName:
171 | descriptiveNegativeName:
172 | negativeButton:
173 | positiveButton:
174 | altNegativeButton:
175 | altPositiveButton:
176 | gravity: 0
177 | dead: 0.19
178 | sensitivity: 1
179 | snap: 0
180 | invert: 1
181 | type: 2
182 | axis: 1
183 | joyNum: 0
184 | - serializedVersion: 3
185 | m_Name: Fire1
186 | descriptiveName:
187 | descriptiveNegativeName:
188 | negativeButton:
189 | positiveButton: joystick button 0
190 | altNegativeButton:
191 | altPositiveButton:
192 | gravity: 1000
193 | dead: 0.001
194 | sensitivity: 1000
195 | snap: 0
196 | invert: 0
197 | type: 0
198 | axis: 0
199 | joyNum: 0
200 | - serializedVersion: 3
201 | m_Name: Fire2
202 | descriptiveName:
203 | descriptiveNegativeName:
204 | negativeButton:
205 | positiveButton: joystick button 1
206 | altNegativeButton:
207 | altPositiveButton:
208 | gravity: 1000
209 | dead: 0.001
210 | sensitivity: 1000
211 | snap: 0
212 | invert: 0
213 | type: 0
214 | axis: 0
215 | joyNum: 0
216 | - serializedVersion: 3
217 | m_Name: Fire3
218 | descriptiveName:
219 | descriptiveNegativeName:
220 | negativeButton:
221 | positiveButton: joystick button 2
222 | altNegativeButton:
223 | altPositiveButton:
224 | gravity: 1000
225 | dead: 0.001
226 | sensitivity: 1000
227 | snap: 0
228 | invert: 0
229 | type: 0
230 | axis: 0
231 | joyNum: 0
232 | - serializedVersion: 3
233 | m_Name: Jump
234 | descriptiveName:
235 | descriptiveNegativeName:
236 | negativeButton:
237 | positiveButton: joystick button 3
238 | altNegativeButton:
239 | altPositiveButton:
240 | gravity: 1000
241 | dead: 0.001
242 | sensitivity: 1000
243 | snap: 0
244 | invert: 0
245 | type: 0
246 | axis: 0
247 | joyNum: 0
248 | - serializedVersion: 3
249 | m_Name: Submit
250 | descriptiveName:
251 | descriptiveNegativeName:
252 | negativeButton:
253 | positiveButton: return
254 | altNegativeButton:
255 | altPositiveButton: joystick button 0
256 | gravity: 1000
257 | dead: 0.001
258 | sensitivity: 1000
259 | snap: 0
260 | invert: 0
261 | type: 0
262 | axis: 0
263 | joyNum: 0
264 | - serializedVersion: 3
265 | m_Name: Submit
266 | descriptiveName:
267 | descriptiveNegativeName:
268 | negativeButton:
269 | positiveButton: enter
270 | altNegativeButton:
271 | altPositiveButton: space
272 | gravity: 1000
273 | dead: 0.001
274 | sensitivity: 1000
275 | snap: 0
276 | invert: 0
277 | type: 0
278 | axis: 0
279 | joyNum: 0
280 | - serializedVersion: 3
281 | m_Name: Cancel
282 | descriptiveName:
283 | descriptiveNegativeName:
284 | negativeButton:
285 | positiveButton: escape
286 | altNegativeButton:
287 | altPositiveButton: joystick button 1
288 | gravity: 1000
289 | dead: 0.001
290 | sensitivity: 1000
291 | snap: 0
292 | invert: 0
293 | type: 0
294 | axis: 0
295 | joyNum: 0
296 | m_UsePhysicalKeys: 1
297 |
--------------------------------------------------------------------------------
/ProjectSettings/MemorySettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!387306366 &1
4 | MemorySettings:
5 | m_ObjectHideFlags: 0
6 | m_EditorMemorySettings:
7 | m_MainAllocatorBlockSize: -1
8 | m_ThreadAllocatorBlockSize: -1
9 | m_MainGfxBlockSize: -1
10 | m_ThreadGfxBlockSize: -1
11 | m_CacheBlockSize: -1
12 | m_TypetreeBlockSize: -1
13 | m_ProfilerBlockSize: -1
14 | m_ProfilerEditorBlockSize: -1
15 | m_BucketAllocatorGranularity: -1
16 | m_BucketAllocatorBucketsCount: -1
17 | m_BucketAllocatorBlockSize: -1
18 | m_BucketAllocatorBlockCount: -1
19 | m_ProfilerBucketAllocatorGranularity: -1
20 | m_ProfilerBucketAllocatorBucketsCount: -1
21 | m_ProfilerBucketAllocatorBlockSize: -1
22 | m_ProfilerBucketAllocatorBlockCount: -1
23 | m_TempAllocatorSizeMain: -1
24 | m_JobTempAllocatorBlockSize: -1
25 | m_BackgroundJobTempAllocatorBlockSize: -1
26 | m_JobTempAllocatorReducedBlockSize: -1
27 | m_TempAllocatorSizeGIBakingWorker: -1
28 | m_TempAllocatorSizeNavMeshWorker: -1
29 | m_TempAllocatorSizeAudioWorker: -1
30 | m_TempAllocatorSizeCloudWorker: -1
31 | m_TempAllocatorSizeGfx: -1
32 | m_TempAllocatorSizeJobWorker: -1
33 | m_TempAllocatorSizeBackgroundWorker: -1
34 | m_TempAllocatorSizePreloadManager: -1
35 | m_PlatformMemorySettings: {}
36 |
--------------------------------------------------------------------------------
/ProjectSettings/NavMeshAreas.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!126 &1
4 | NavMeshProjectSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 2
7 | areas:
8 | - name: Walkable
9 | cost: 1
10 | - name: Not Walkable
11 | cost: 1
12 | - name: Jump
13 | cost: 2
14 | - name:
15 | cost: 1
16 | - name:
17 | cost: 1
18 | - name:
19 | cost: 1
20 | - name:
21 | cost: 1
22 | - name:
23 | cost: 1
24 | - name:
25 | cost: 1
26 | - name:
27 | cost: 1
28 | - name:
29 | cost: 1
30 | - name:
31 | cost: 1
32 | - name:
33 | cost: 1
34 | - name:
35 | cost: 1
36 | - name:
37 | cost: 1
38 | - name:
39 | cost: 1
40 | - name:
41 | cost: 1
42 | - name:
43 | cost: 1
44 | - name:
45 | cost: 1
46 | - name:
47 | cost: 1
48 | - name:
49 | cost: 1
50 | - name:
51 | cost: 1
52 | - name:
53 | cost: 1
54 | - name:
55 | cost: 1
56 | - name:
57 | cost: 1
58 | - name:
59 | cost: 1
60 | - name:
61 | cost: 1
62 | - name:
63 | cost: 1
64 | - name:
65 | cost: 1
66 | - name:
67 | cost: 1
68 | - name:
69 | cost: 1
70 | - name:
71 | cost: 1
72 | m_LastAgentTypeID: -887442657
73 | m_Settings:
74 | - serializedVersion: 3
75 | agentTypeID: 0
76 | agentRadius: 0.5
77 | agentHeight: 2
78 | agentSlope: 45
79 | agentClimb: 0.75
80 | ledgeDropHeight: 0
81 | maxJumpAcrossDistance: 0
82 | minRegionArea: 2
83 | manualCellSize: 0
84 | cellSize: 0.16666667
85 | manualTileSize: 0
86 | tileSize: 256
87 | buildHeightMesh: 0
88 | maxJobWorkers: 0
89 | preserveTilesOutsideBounds: 0
90 | debug:
91 | m_Flags: 0
92 | m_SettingNames:
93 | - Humanoid
94 |
--------------------------------------------------------------------------------
/ProjectSettings/PackageManagerSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!114 &1
4 | MonoBehaviour:
5 | m_ObjectHideFlags: 61
6 | m_CorrespondingSourceObject: {fileID: 0}
7 | m_PrefabInstance: {fileID: 0}
8 | m_PrefabAsset: {fileID: 0}
9 | m_GameObject: {fileID: 0}
10 | m_Enabled: 1
11 | m_EditorHideFlags: 0
12 | m_Script: {fileID: 13964, guid: 0000000000000000e000000000000000, type: 0}
13 | m_Name:
14 | m_EditorClassIdentifier:
15 | m_EnablePreReleasePackages: 0
16 | m_AdvancedSettingsExpanded: 1
17 | m_ScopedRegistriesSettingsExpanded: 1
18 | m_SeeAllPackageVersions: 0
19 | m_DismissPreviewPackagesInUse: 0
20 | oneTimeWarningShown: 0
21 | m_Registries:
22 | - m_Id: main
23 | m_Name:
24 | m_Url: https://packages.unity.com
25 | m_Scopes: []
26 | m_IsDefault: 1
27 | m_Capabilities: 7
28 | m_ConfigSource: 0
29 | - m_Id: scoped:project:package.openupm.com
30 | m_Name: package.openupm.com
31 | m_Url: https://package.openupm.com
32 | m_Scopes:
33 | - com.cysharp.unitask
34 | - com.openupm
35 | m_IsDefault: 0
36 | m_Capabilities: 0
37 | m_ConfigSource: 4
38 | m_UserSelectedRegistryName: package.openupm.com
39 | m_UserAddingNewScopedRegistry: 0
40 | m_RegistryInfoDraft:
41 | m_Modified: 0
42 | m_ErrorMessage:
43 | m_UserModificationsInstanceId: -896
44 | m_OriginalInstanceId: -898
45 | m_LoadAssets: 0
46 |
--------------------------------------------------------------------------------
/ProjectSettings/Physics2DSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!19 &1
4 | Physics2DSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 6
7 | m_Gravity: {x: 0, y: -9.81}
8 | m_DefaultMaterial: {fileID: 0}
9 | m_VelocityIterations: 8
10 | m_PositionIterations: 3
11 | m_VelocityThreshold: 1
12 | m_MaxLinearCorrection: 0.2
13 | m_MaxAngularCorrection: 8
14 | m_MaxTranslationSpeed: 100
15 | m_MaxRotationSpeed: 360
16 | m_BaumgarteScale: 0.2
17 | m_BaumgarteTimeOfImpactScale: 0.75
18 | m_TimeToSleep: 0.5
19 | m_LinearSleepTolerance: 0.01
20 | m_AngularSleepTolerance: 2
21 | m_DefaultContactOffset: 0.01
22 | m_JobOptions:
23 | serializedVersion: 2
24 | useMultithreading: 0
25 | useConsistencySorting: 0
26 | m_InterpolationPosesPerJob: 100
27 | m_NewContactsPerJob: 30
28 | m_CollideContactsPerJob: 100
29 | m_ClearFlagsPerJob: 200
30 | m_ClearBodyForcesPerJob: 200
31 | m_SyncDiscreteFixturesPerJob: 50
32 | m_SyncContinuousFixturesPerJob: 50
33 | m_FindNearestContactsPerJob: 100
34 | m_UpdateTriggerContactsPerJob: 100
35 | m_IslandSolverCostThreshold: 100
36 | m_IslandSolverBodyCostScale: 1
37 | m_IslandSolverContactCostScale: 10
38 | m_IslandSolverJointCostScale: 10
39 | m_IslandSolverBodiesPerJob: 50
40 | m_IslandSolverContactsPerJob: 50
41 | m_SimulationMode: 0
42 | m_QueriesHitTriggers: 1
43 | m_QueriesStartInColliders: 1
44 | m_CallbacksOnDisable: 1
45 | m_ReuseCollisionCallbacks: 1
46 | m_AutoSyncTransforms: 0
47 | m_GizmoOptions: 10
48 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
49 |
--------------------------------------------------------------------------------
/ProjectSettings/PresetManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!1386491679 &1
4 | PresetManager:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 2
7 | m_DefaultPresets: {}
8 |
--------------------------------------------------------------------------------
/ProjectSettings/ProjectSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!129 &1
4 | PlayerSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 26
7 | productGUID: 56e5fc3a2d6e25d4a9bbb83dfa9c7cc7
8 | AndroidProfiler: 0
9 | AndroidFilterTouchesWhenObscured: 0
10 | AndroidEnableSustainedPerformanceMode: 0
11 | defaultScreenOrientation: 4
12 | targetDevice: 2
13 | useOnDemandResources: 0
14 | accelerometerFrequency: 60
15 | companyName: DefaultCompany
16 | productName: Unity-AudioLoader
17 | defaultCursor: {fileID: 0}
18 | cursorHotspot: {x: 0, y: 0}
19 | m_SplashScreenBackgroundColor: {r: 0.12156863, g: 0.12156863, b: 0.1254902, a: 1}
20 | m_ShowUnitySplashScreen: 1
21 | m_ShowUnitySplashLogo: 1
22 | m_SplashScreenOverlayOpacity: 1
23 | m_SplashScreenAnimation: 1
24 | m_SplashScreenLogoStyle: 1
25 | m_SplashScreenDrawMode: 0
26 | m_SplashScreenBackgroundAnimationZoom: 1
27 | m_SplashScreenLogoAnimationZoom: 1
28 | m_SplashScreenBackgroundLandscapeAspect: 1
29 | m_SplashScreenBackgroundPortraitAspect: 1
30 | m_SplashScreenBackgroundLandscapeUvs:
31 | serializedVersion: 2
32 | x: 0
33 | y: 0
34 | width: 1
35 | height: 1
36 | m_SplashScreenBackgroundPortraitUvs:
37 | serializedVersion: 2
38 | x: 0
39 | y: 0
40 | width: 1
41 | height: 1
42 | m_SplashScreenLogos: []
43 | m_VirtualRealitySplashScreen: {fileID: 0}
44 | m_HolographicTrackingLossScreen: {fileID: 0}
45 | defaultScreenWidth: 1920
46 | defaultScreenHeight: 1080
47 | defaultScreenWidthWeb: 960
48 | defaultScreenHeightWeb: 600
49 | m_StereoRenderingPath: 0
50 | m_ActiveColorSpace: 0
51 | m_SpriteBatchVertexThreshold: 300
52 | m_MTRendering: 1
53 | mipStripping: 0
54 | numberOfMipsStripped: 0
55 | numberOfMipsStrippedPerMipmapLimitGroup: {}
56 | m_StackTraceTypes: 010000000100000001000000010000000100000001000000
57 | iosShowActivityIndicatorOnLoading: -1
58 | androidShowActivityIndicatorOnLoading: -1
59 | iosUseCustomAppBackgroundBehavior: 0
60 | allowedAutorotateToPortrait: 1
61 | allowedAutorotateToPortraitUpsideDown: 1
62 | allowedAutorotateToLandscapeRight: 1
63 | allowedAutorotateToLandscapeLeft: 1
64 | useOSAutorotation: 1
65 | use32BitDisplayBuffer: 1
66 | preserveFramebufferAlpha: 0
67 | disableDepthAndStencilBuffers: 0
68 | androidStartInFullscreen: 1
69 | androidRenderOutsideSafeArea: 1
70 | androidUseSwappy: 1
71 | androidBlitType: 0
72 | androidResizableWindow: 0
73 | androidDefaultWindowWidth: 1920
74 | androidDefaultWindowHeight: 1080
75 | androidMinimumWindowWidth: 400
76 | androidMinimumWindowHeight: 300
77 | androidFullscreenMode: 1
78 | defaultIsNativeResolution: 1
79 | macRetinaSupport: 1
80 | runInBackground: 0
81 | captureSingleScreen: 0
82 | muteOtherAudioSources: 0
83 | Prepare IOS For Recording: 0
84 | Force IOS Speakers When Recording: 0
85 | deferSystemGesturesMode: 0
86 | hideHomeButton: 0
87 | submitAnalytics: 1
88 | usePlayerLog: 1
89 | bakeCollisionMeshes: 0
90 | forceSingleInstance: 0
91 | useFlipModelSwapchain: 1
92 | resizableWindow: 0
93 | useMacAppStoreValidation: 0
94 | macAppStoreCategory: public.app-category.games
95 | gpuSkinning: 0
96 | xboxPIXTextureCapture: 0
97 | xboxEnableAvatar: 0
98 | xboxEnableKinect: 0
99 | xboxEnableKinectAutoTracking: 0
100 | xboxEnableFitness: 0
101 | visibleInBackground: 1
102 | allowFullscreenSwitch: 1
103 | fullscreenMode: 1
104 | xboxSpeechDB: 0
105 | xboxEnableHeadOrientation: 0
106 | xboxEnableGuest: 0
107 | xboxEnablePIXSampling: 0
108 | metalFramebufferOnly: 0
109 | xboxOneResolution: 0
110 | xboxOneSResolution: 0
111 | xboxOneXResolution: 3
112 | xboxOneMonoLoggingLevel: 0
113 | xboxOneLoggingLevel: 1
114 | xboxOneDisableEsram: 0
115 | xboxOneEnableTypeOptimization: 0
116 | xboxOnePresentImmediateThreshold: 0
117 | switchQueueCommandMemory: 1048576
118 | switchQueueControlMemory: 16384
119 | switchQueueComputeMemory: 262144
120 | switchNVNShaderPoolsGranularity: 33554432
121 | switchNVNDefaultPoolsGranularity: 16777216
122 | switchNVNOtherPoolsGranularity: 16777216
123 | switchGpuScratchPoolGranularity: 2097152
124 | switchAllowGpuScratchShrinking: 0
125 | switchNVNMaxPublicTextureIDCount: 0
126 | switchNVNMaxPublicSamplerIDCount: 0
127 | switchNVNGraphicsFirmwareMemory: 32
128 | stadiaPresentMode: 0
129 | stadiaTargetFramerate: 0
130 | vulkanNumSwapchainBuffers: 3
131 | vulkanEnableSetSRGBWrite: 0
132 | vulkanEnablePreTransform: 0
133 | vulkanEnableLateAcquireNextImage: 0
134 | vulkanEnableCommandBufferRecycling: 1
135 | loadStoreDebugModeEnabled: 0
136 | bundleVersion: 1.0
137 | preloadedAssets: []
138 | metroInputSource: 0
139 | wsaTransparentSwapchain: 0
140 | m_HolographicPauseOnTrackingLoss: 1
141 | xboxOneDisableKinectGpuReservation: 1
142 | xboxOneEnable7thCore: 1
143 | vrSettings:
144 | enable360StereoCapture: 0
145 | isWsaHolographicRemotingEnabled: 0
146 | enableFrameTimingStats: 0
147 | enableOpenGLProfilerGPURecorders: 1
148 | useHDRDisplay: 0
149 | hdrBitDepth: 0
150 | m_ColorGamuts: 00000000
151 | targetPixelDensity: 30
152 | resolutionScalingMode: 0
153 | resetResolutionOnWindowResize: 0
154 | androidSupportedAspectRatio: 1
155 | androidMaxAspectRatio: 2.1
156 | applicationIdentifier: {}
157 | buildNumber:
158 | Standalone: 0
159 | VisionOS: 0
160 | iPhone: 0
161 | tvOS: 0
162 | overrideDefaultApplicationIdentifier: 0
163 | AndroidBundleVersionCode: 1
164 | AndroidMinSdkVersion: 22
165 | AndroidTargetSdkVersion: 0
166 | AndroidPreferredInstallLocation: 1
167 | aotOptions:
168 | stripEngineCode: 1
169 | iPhoneStrippingLevel: 0
170 | iPhoneScriptCallOptimization: 0
171 | ForceInternetPermission: 0
172 | ForceSDCardPermission: 0
173 | CreateWallpaper: 0
174 | APKExpansionFiles: 0
175 | keepLoadedShadersAlive: 0
176 | StripUnusedMeshComponents: 0
177 | strictShaderVariantMatching: 0
178 | VertexChannelCompressionMask: 4054
179 | iPhoneSdkVersion: 988
180 | iOSTargetOSVersionString: 12.0
181 | tvOSSdkVersion: 0
182 | tvOSRequireExtendedGameController: 0
183 | tvOSTargetOSVersionString: 12.0
184 | VisionOSSdkVersion: 0
185 | VisionOSTargetOSVersionString: 1.0
186 | uIPrerenderedIcon: 0
187 | uIRequiresPersistentWiFi: 0
188 | uIRequiresFullScreen: 1
189 | uIStatusBarHidden: 1
190 | uIExitOnSuspend: 0
191 | uIStatusBarStyle: 0
192 | appleTVSplashScreen: {fileID: 0}
193 | appleTVSplashScreen2x: {fileID: 0}
194 | tvOSSmallIconLayers: []
195 | tvOSSmallIconLayers2x: []
196 | tvOSLargeIconLayers: []
197 | tvOSLargeIconLayers2x: []
198 | tvOSTopShelfImageLayers: []
199 | tvOSTopShelfImageLayers2x: []
200 | tvOSTopShelfImageWideLayers: []
201 | tvOSTopShelfImageWideLayers2x: []
202 | iOSLaunchScreenType: 0
203 | iOSLaunchScreenPortrait: {fileID: 0}
204 | iOSLaunchScreenLandscape: {fileID: 0}
205 | iOSLaunchScreenBackgroundColor:
206 | serializedVersion: 2
207 | rgba: 0
208 | iOSLaunchScreenFillPct: 100
209 | iOSLaunchScreenSize: 100
210 | iOSLaunchScreenCustomXibPath:
211 | iOSLaunchScreeniPadType: 0
212 | iOSLaunchScreeniPadImage: {fileID: 0}
213 | iOSLaunchScreeniPadBackgroundColor:
214 | serializedVersion: 2
215 | rgba: 0
216 | iOSLaunchScreeniPadFillPct: 100
217 | iOSLaunchScreeniPadSize: 100
218 | iOSLaunchScreeniPadCustomXibPath:
219 | iOSLaunchScreenCustomStoryboardPath:
220 | iOSLaunchScreeniPadCustomStoryboardPath:
221 | iOSDeviceRequirements: []
222 | iOSURLSchemes: []
223 | macOSURLSchemes: []
224 | iOSBackgroundModes: 0
225 | iOSMetalForceHardShadows: 0
226 | metalEditorSupport: 1
227 | metalAPIValidation: 1
228 | iOSRenderExtraFrameOnPause: 0
229 | iosCopyPluginsCodeInsteadOfSymlink: 0
230 | appleDeveloperTeamID:
231 | iOSManualSigningProvisioningProfileID:
232 | tvOSManualSigningProvisioningProfileID:
233 | VisionOSManualSigningProvisioningProfileID:
234 | iOSManualSigningProvisioningProfileType: 0
235 | tvOSManualSigningProvisioningProfileType: 0
236 | VisionOSManualSigningProvisioningProfileType: 0
237 | appleEnableAutomaticSigning: 0
238 | iOSRequireARKit: 0
239 | iOSAutomaticallyDetectAndAddCapabilities: 1
240 | appleEnableProMotion: 0
241 | shaderPrecisionModel: 0
242 | clonedFromGUID: 00000000000000000000000000000000
243 | templatePackageId:
244 | templateDefaultScene:
245 | useCustomMainManifest: 0
246 | useCustomLauncherManifest: 0
247 | useCustomMainGradleTemplate: 0
248 | useCustomLauncherGradleManifest: 0
249 | useCustomBaseGradleTemplate: 0
250 | useCustomGradlePropertiesTemplate: 0
251 | useCustomGradleSettingsTemplate: 0
252 | useCustomProguardFile: 0
253 | AndroidTargetArchitectures: 1
254 | AndroidTargetDevices: 0
255 | AndroidSplashScreenScale: 0
256 | androidSplashScreen: {fileID: 0}
257 | AndroidKeystoreName:
258 | AndroidKeyaliasName:
259 | AndroidEnableArmv9SecurityFeatures: 0
260 | AndroidBuildApkPerCpuArchitecture: 0
261 | AndroidTVCompatibility: 0
262 | AndroidIsGame: 1
263 | AndroidEnableTango: 0
264 | androidEnableBanner: 1
265 | androidUseLowAccuracyLocation: 0
266 | androidUseCustomKeystore: 0
267 | m_AndroidBanners:
268 | - width: 320
269 | height: 180
270 | banner: {fileID: 0}
271 | androidGamepadSupportLevel: 0
272 | chromeosInputEmulation: 1
273 | AndroidMinifyRelease: 0
274 | AndroidMinifyDebug: 0
275 | AndroidValidateAppBundleSize: 1
276 | AndroidAppBundleSizeToValidate: 150
277 | m_BuildTargetIcons: []
278 | m_BuildTargetPlatformIcons:
279 | - m_BuildTarget: iPhone
280 | m_Icons:
281 | - m_Textures: []
282 | m_Width: 180
283 | m_Height: 180
284 | m_Kind: 0
285 | m_SubKind: iPhone
286 | - m_Textures: []
287 | m_Width: 120
288 | m_Height: 120
289 | m_Kind: 0
290 | m_SubKind: iPhone
291 | - m_Textures: []
292 | m_Width: 167
293 | m_Height: 167
294 | m_Kind: 0
295 | m_SubKind: iPad
296 | - m_Textures: []
297 | m_Width: 152
298 | m_Height: 152
299 | m_Kind: 0
300 | m_SubKind: iPad
301 | - m_Textures: []
302 | m_Width: 76
303 | m_Height: 76
304 | m_Kind: 0
305 | m_SubKind: iPad
306 | - m_Textures: []
307 | m_Width: 120
308 | m_Height: 120
309 | m_Kind: 3
310 | m_SubKind: iPhone
311 | - m_Textures: []
312 | m_Width: 80
313 | m_Height: 80
314 | m_Kind: 3
315 | m_SubKind: iPhone
316 | - m_Textures: []
317 | m_Width: 80
318 | m_Height: 80
319 | m_Kind: 3
320 | m_SubKind: iPad
321 | - m_Textures: []
322 | m_Width: 40
323 | m_Height: 40
324 | m_Kind: 3
325 | m_SubKind: iPad
326 | - m_Textures: []
327 | m_Width: 87
328 | m_Height: 87
329 | m_Kind: 1
330 | m_SubKind: iPhone
331 | - m_Textures: []
332 | m_Width: 58
333 | m_Height: 58
334 | m_Kind: 1
335 | m_SubKind: iPhone
336 | - m_Textures: []
337 | m_Width: 29
338 | m_Height: 29
339 | m_Kind: 1
340 | m_SubKind: iPhone
341 | - m_Textures: []
342 | m_Width: 58
343 | m_Height: 58
344 | m_Kind: 1
345 | m_SubKind: iPad
346 | - m_Textures: []
347 | m_Width: 29
348 | m_Height: 29
349 | m_Kind: 1
350 | m_SubKind: iPad
351 | - m_Textures: []
352 | m_Width: 60
353 | m_Height: 60
354 | m_Kind: 2
355 | m_SubKind: iPhone
356 | - m_Textures: []
357 | m_Width: 40
358 | m_Height: 40
359 | m_Kind: 2
360 | m_SubKind: iPhone
361 | - m_Textures: []
362 | m_Width: 40
363 | m_Height: 40
364 | m_Kind: 2
365 | m_SubKind: iPad
366 | - m_Textures: []
367 | m_Width: 20
368 | m_Height: 20
369 | m_Kind: 2
370 | m_SubKind: iPad
371 | - m_Textures: []
372 | m_Width: 1024
373 | m_Height: 1024
374 | m_Kind: 4
375 | m_SubKind: App Store
376 | - m_BuildTarget: Android
377 | m_Icons:
378 | - m_Textures: []
379 | m_Width: 432
380 | m_Height: 432
381 | m_Kind: 2
382 | m_SubKind:
383 | - m_Textures: []
384 | m_Width: 324
385 | m_Height: 324
386 | m_Kind: 2
387 | m_SubKind:
388 | - m_Textures: []
389 | m_Width: 216
390 | m_Height: 216
391 | m_Kind: 2
392 | m_SubKind:
393 | - m_Textures: []
394 | m_Width: 162
395 | m_Height: 162
396 | m_Kind: 2
397 | m_SubKind:
398 | - m_Textures: []
399 | m_Width: 108
400 | m_Height: 108
401 | m_Kind: 2
402 | m_SubKind:
403 | - m_Textures: []
404 | m_Width: 81
405 | m_Height: 81
406 | m_Kind: 2
407 | m_SubKind:
408 | - m_Textures: []
409 | m_Width: 192
410 | m_Height: 192
411 | m_Kind: 1
412 | m_SubKind:
413 | - m_Textures: []
414 | m_Width: 144
415 | m_Height: 144
416 | m_Kind: 1
417 | m_SubKind:
418 | - m_Textures: []
419 | m_Width: 96
420 | m_Height: 96
421 | m_Kind: 1
422 | m_SubKind:
423 | - m_Textures: []
424 | m_Width: 72
425 | m_Height: 72
426 | m_Kind: 1
427 | m_SubKind:
428 | - m_Textures: []
429 | m_Width: 48
430 | m_Height: 48
431 | m_Kind: 1
432 | m_SubKind:
433 | - m_Textures: []
434 | m_Width: 36
435 | m_Height: 36
436 | m_Kind: 1
437 | m_SubKind:
438 | - m_Textures: []
439 | m_Width: 192
440 | m_Height: 192
441 | m_Kind: 0
442 | m_SubKind:
443 | - m_Textures: []
444 | m_Width: 144
445 | m_Height: 144
446 | m_Kind: 0
447 | m_SubKind:
448 | - m_Textures: []
449 | m_Width: 96
450 | m_Height: 96
451 | m_Kind: 0
452 | m_SubKind:
453 | - m_Textures: []
454 | m_Width: 72
455 | m_Height: 72
456 | m_Kind: 0
457 | m_SubKind:
458 | - m_Textures: []
459 | m_Width: 48
460 | m_Height: 48
461 | m_Kind: 0
462 | m_SubKind:
463 | - m_Textures: []
464 | m_Width: 36
465 | m_Height: 36
466 | m_Kind: 0
467 | m_SubKind:
468 | m_BuildTargetBatching: []
469 | m_BuildTargetShaderSettings: []
470 | m_BuildTargetGraphicsJobs: []
471 | m_BuildTargetGraphicsJobMode: []
472 | m_BuildTargetGraphicsAPIs: []
473 | m_BuildTargetVRSettings: []
474 | m_DefaultShaderChunkSizeInMB: 16
475 | m_DefaultShaderChunkCount: 0
476 | openGLRequireES31: 0
477 | openGLRequireES31AEP: 0
478 | openGLRequireES32: 0
479 | m_TemplateCustomTags: {}
480 | mobileMTRendering:
481 | Android: 1
482 | VisionOS: 1
483 | iPhone: 1
484 | tvOS: 1
485 | m_BuildTargetGroupLightmapEncodingQuality: []
486 | m_BuildTargetGroupHDRCubemapEncodingQuality: []
487 | m_BuildTargetGroupLightmapSettings: []
488 | m_BuildTargetGroupLoadStoreDebugModeSettings: []
489 | m_BuildTargetNormalMapEncoding: []
490 | m_BuildTargetDefaultTextureCompressionFormat: []
491 | playModeTestRunnerEnabled: 0
492 | runPlayModeTestAsEditModeTest: 0
493 | actionOnDotNetUnhandledException: 1
494 | enableInternalProfiler: 0
495 | logObjCUncaughtExceptions: 1
496 | enableCrashReportAPI: 0
497 | cameraUsageDescription:
498 | locationUsageDescription:
499 | microphoneUsageDescription:
500 | bluetoothUsageDescription:
501 | macOSTargetOSVersion: 10.13.0
502 | switchNMETAOverride:
503 | switchNetLibKey:
504 | switchSocketMemoryPoolSize: 6144
505 | switchSocketAllocatorPoolSize: 128
506 | switchSocketConcurrencyLimit: 14
507 | switchScreenResolutionBehavior: 2
508 | switchUseCPUProfiler: 0
509 | switchUseGOLDLinker: 0
510 | switchLTOSetting: 0
511 | switchApplicationID: 0x01004b9000490000
512 | switchNSODependencies:
513 | switchCompilerFlags:
514 | switchTitleNames_0:
515 | switchTitleNames_1:
516 | switchTitleNames_2:
517 | switchTitleNames_3:
518 | switchTitleNames_4:
519 | switchTitleNames_5:
520 | switchTitleNames_6:
521 | switchTitleNames_7:
522 | switchTitleNames_8:
523 | switchTitleNames_9:
524 | switchTitleNames_10:
525 | switchTitleNames_11:
526 | switchTitleNames_12:
527 | switchTitleNames_13:
528 | switchTitleNames_14:
529 | switchTitleNames_15:
530 | switchPublisherNames_0:
531 | switchPublisherNames_1:
532 | switchPublisherNames_2:
533 | switchPublisherNames_3:
534 | switchPublisherNames_4:
535 | switchPublisherNames_5:
536 | switchPublisherNames_6:
537 | switchPublisherNames_7:
538 | switchPublisherNames_8:
539 | switchPublisherNames_9:
540 | switchPublisherNames_10:
541 | switchPublisherNames_11:
542 | switchPublisherNames_12:
543 | switchPublisherNames_13:
544 | switchPublisherNames_14:
545 | switchPublisherNames_15:
546 | switchIcons_0: {fileID: 0}
547 | switchIcons_1: {fileID: 0}
548 | switchIcons_2: {fileID: 0}
549 | switchIcons_3: {fileID: 0}
550 | switchIcons_4: {fileID: 0}
551 | switchIcons_5: {fileID: 0}
552 | switchIcons_6: {fileID: 0}
553 | switchIcons_7: {fileID: 0}
554 | switchIcons_8: {fileID: 0}
555 | switchIcons_9: {fileID: 0}
556 | switchIcons_10: {fileID: 0}
557 | switchIcons_11: {fileID: 0}
558 | switchIcons_12: {fileID: 0}
559 | switchIcons_13: {fileID: 0}
560 | switchIcons_14: {fileID: 0}
561 | switchIcons_15: {fileID: 0}
562 | switchSmallIcons_0: {fileID: 0}
563 | switchSmallIcons_1: {fileID: 0}
564 | switchSmallIcons_2: {fileID: 0}
565 | switchSmallIcons_3: {fileID: 0}
566 | switchSmallIcons_4: {fileID: 0}
567 | switchSmallIcons_5: {fileID: 0}
568 | switchSmallIcons_6: {fileID: 0}
569 | switchSmallIcons_7: {fileID: 0}
570 | switchSmallIcons_8: {fileID: 0}
571 | switchSmallIcons_9: {fileID: 0}
572 | switchSmallIcons_10: {fileID: 0}
573 | switchSmallIcons_11: {fileID: 0}
574 | switchSmallIcons_12: {fileID: 0}
575 | switchSmallIcons_13: {fileID: 0}
576 | switchSmallIcons_14: {fileID: 0}
577 | switchSmallIcons_15: {fileID: 0}
578 | switchManualHTML:
579 | switchAccessibleURLs:
580 | switchLegalInformation:
581 | switchMainThreadStackSize: 1048576
582 | switchPresenceGroupId:
583 | switchLogoHandling: 0
584 | switchReleaseVersion: 0
585 | switchDisplayVersion: 1.0.0
586 | switchStartupUserAccount: 0
587 | switchSupportedLanguagesMask: 0
588 | switchLogoType: 0
589 | switchApplicationErrorCodeCategory:
590 | switchUserAccountSaveDataSize: 0
591 | switchUserAccountSaveDataJournalSize: 0
592 | switchApplicationAttribute: 0
593 | switchCardSpecSize: -1
594 | switchCardSpecClock: -1
595 | switchRatingsMask: 0
596 | switchRatingsInt_0: 0
597 | switchRatingsInt_1: 0
598 | switchRatingsInt_2: 0
599 | switchRatingsInt_3: 0
600 | switchRatingsInt_4: 0
601 | switchRatingsInt_5: 0
602 | switchRatingsInt_6: 0
603 | switchRatingsInt_7: 0
604 | switchRatingsInt_8: 0
605 | switchRatingsInt_9: 0
606 | switchRatingsInt_10: 0
607 | switchRatingsInt_11: 0
608 | switchRatingsInt_12: 0
609 | switchLocalCommunicationIds_0:
610 | switchLocalCommunicationIds_1:
611 | switchLocalCommunicationIds_2:
612 | switchLocalCommunicationIds_3:
613 | switchLocalCommunicationIds_4:
614 | switchLocalCommunicationIds_5:
615 | switchLocalCommunicationIds_6:
616 | switchLocalCommunicationIds_7:
617 | switchParentalControl: 0
618 | switchAllowsScreenshot: 1
619 | switchAllowsVideoCapturing: 1
620 | switchAllowsRuntimeAddOnContentInstall: 0
621 | switchDataLossConfirmation: 0
622 | switchUserAccountLockEnabled: 0
623 | switchSystemResourceMemory: 16777216
624 | switchSupportedNpadStyles: 22
625 | switchNativeFsCacheSize: 32
626 | switchIsHoldTypeHorizontal: 1
627 | switchSupportedNpadCount: 8
628 | switchEnableTouchScreen: 1
629 | switchSocketConfigEnabled: 0
630 | switchTcpInitialSendBufferSize: 32
631 | switchTcpInitialReceiveBufferSize: 64
632 | switchTcpAutoSendBufferSizeMax: 256
633 | switchTcpAutoReceiveBufferSizeMax: 256
634 | switchUdpSendBufferSize: 9
635 | switchUdpReceiveBufferSize: 42
636 | switchSocketBufferEfficiency: 4
637 | switchSocketInitializeEnabled: 1
638 | switchNetworkInterfaceManagerInitializeEnabled: 1
639 | switchPlayerConnectionEnabled: 1
640 | switchUseNewStyleFilepaths: 1
641 | switchUseLegacyFmodPriorities: 0
642 | switchUseMicroSleepForYield: 1
643 | switchEnableRamDiskSupport: 0
644 | switchMicroSleepForYieldTime: 25
645 | switchRamDiskSpaceSize: 12
646 | ps4NPAgeRating: 12
647 | ps4NPTitleSecret:
648 | ps4NPTrophyPackPath:
649 | ps4ParentalLevel: 11
650 | ps4ContentID: ED1633-NPXX51362_00-0000000000000000
651 | ps4Category: 0
652 | ps4MasterVersion: 01.00
653 | ps4AppVersion: 01.00
654 | ps4AppType: 0
655 | ps4ParamSfxPath:
656 | ps4VideoOutPixelFormat: 0
657 | ps4VideoOutInitialWidth: 1920
658 | ps4VideoOutBaseModeInitialWidth: 1920
659 | ps4VideoOutReprojectionRate: 60
660 | ps4PronunciationXMLPath:
661 | ps4PronunciationSIGPath:
662 | ps4BackgroundImagePath:
663 | ps4StartupImagePath:
664 | ps4StartupImagesFolder:
665 | ps4IconImagesFolder:
666 | ps4SaveDataImagePath:
667 | ps4SdkOverride:
668 | ps4BGMPath:
669 | ps4ShareFilePath:
670 | ps4ShareOverlayImagePath:
671 | ps4PrivacyGuardImagePath:
672 | ps4ExtraSceSysFile:
673 | ps4NPtitleDatPath:
674 | ps4RemotePlayKeyAssignment: -1
675 | ps4RemotePlayKeyMappingDir:
676 | ps4PlayTogetherPlayerCount: 0
677 | ps4EnterButtonAssignment: 2
678 | ps4ApplicationParam1: 0
679 | ps4ApplicationParam2: 0
680 | ps4ApplicationParam3: 0
681 | ps4ApplicationParam4: 0
682 | ps4DownloadDataSize: 0
683 | ps4GarlicHeapSize: 2048
684 | ps4ProGarlicHeapSize: 2560
685 | playerPrefsMaxSize: 32768
686 | ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ
687 | ps4pnSessions: 1
688 | ps4pnPresence: 1
689 | ps4pnFriends: 1
690 | ps4pnGameCustomData: 1
691 | playerPrefsSupport: 0
692 | enableApplicationExit: 0
693 | resetTempFolder: 1
694 | restrictedAudioUsageRights: 0
695 | ps4UseResolutionFallback: 0
696 | ps4ReprojectionSupport: 0
697 | ps4UseAudio3dBackend: 0
698 | ps4UseLowGarlicFragmentationMode: 1
699 | ps4SocialScreenEnabled: 0
700 | ps4ScriptOptimizationLevel: 2
701 | ps4Audio3dVirtualSpeakerCount: 14
702 | ps4attribCpuUsage: 0
703 | ps4PatchPkgPath:
704 | ps4PatchLatestPkgPath:
705 | ps4PatchChangeinfoPath:
706 | ps4PatchDayOne: 0
707 | ps4attribUserManagement: 0
708 | ps4attribMoveSupport: 0
709 | ps4attrib3DSupport: 0
710 | ps4attribShareSupport: 0
711 | ps4attribExclusiveVR: 0
712 | ps4disableAutoHideSplash: 0
713 | ps4videoRecordingFeaturesUsed: 0
714 | ps4contentSearchFeaturesUsed: 0
715 | ps4CompatibilityPS5: 0
716 | ps4AllowPS5Detection: 0
717 | ps4GPU800MHz: 1
718 | ps4attribEyeToEyeDistanceSettingVR: 0
719 | ps4IncludedModules: []
720 | ps4attribVROutputEnabled: 0
721 | monoEnv:
722 | splashScreenBackgroundSourceLandscape: {fileID: 0}
723 | splashScreenBackgroundSourcePortrait: {fileID: 0}
724 | blurSplashScreenBackground: 1
725 | spritePackerPolicy:
726 | webGLMemorySize: 32
727 | webGLExceptionSupport: 1
728 | webGLNameFilesAsHashes: 0
729 | webGLShowDiagnostics: 0
730 | webGLDataCaching: 1
731 | webGLDebugSymbols: 0
732 | webGLEmscriptenArgs:
733 | webGLModulesDirectory:
734 | webGLTemplate: APPLICATION:Default
735 | webGLAnalyzeBuildSize: 0
736 | webGLUseEmbeddedResources: 0
737 | webGLCompressionFormat: 0
738 | webGLWasmArithmeticExceptions: 0
739 | webGLLinkerTarget: 1
740 | webGLThreadsSupport: 0
741 | webGLDecompressionFallback: 0
742 | webGLInitialMemorySize: 32
743 | webGLMaximumMemorySize: 2048
744 | webGLMemoryGrowthMode: 2
745 | webGLMemoryLinearGrowthStep: 16
746 | webGLMemoryGeometricGrowthStep: 0.2
747 | webGLMemoryGeometricGrowthCap: 96
748 | webGLPowerPreference: 2
749 | scriptingDefineSymbols: {}
750 | additionalCompilerArguments: {}
751 | platformArchitecture: {}
752 | scriptingBackend: {}
753 | il2cppCompilerConfiguration: {}
754 | il2cppCodeGeneration: {}
755 | managedStrippingLevel: {}
756 | incrementalIl2cppBuild: {}
757 | suppressCommonWarnings: 1
758 | allowUnsafeCode: 0
759 | useDeterministicCompilation: 1
760 | additionalIl2CppArgs:
761 | scriptingRuntimeVersion: 1
762 | gcIncremental: 1
763 | gcWBarrierValidation: 0
764 | apiCompatibilityLevelPerPlatform: {}
765 | m_RenderingPath: 1
766 | m_MobileRenderingPath: 1
767 | metroPackageName: Unity-AudioLoader
768 | metroPackageVersion:
769 | metroCertificatePath:
770 | metroCertificatePassword:
771 | metroCertificateSubject:
772 | metroCertificateIssuer:
773 | metroCertificateNotAfter: 0000000000000000
774 | metroApplicationDescription: Unity-AudioLoader
775 | wsaImages: {}
776 | metroTileShortName:
777 | metroTileShowName: 0
778 | metroMediumTileShowName: 0
779 | metroLargeTileShowName: 0
780 | metroWideTileShowName: 0
781 | metroSupportStreamingInstall: 0
782 | metroLastRequiredScene: 0
783 | metroDefaultTileSize: 1
784 | metroTileForegroundText: 2
785 | metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0}
786 | metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628, a: 1}
787 | metroSplashScreenUseBackgroundColor: 0
788 | platformCapabilities: {}
789 | metroTargetDeviceFamilies: {}
790 | metroFTAName:
791 | metroFTAFileTypes: []
792 | metroProtocolName:
793 | vcxProjDefaultLanguage:
794 | XboxOneProductId:
795 | XboxOneUpdateKey:
796 | XboxOneSandboxId:
797 | XboxOneContentId:
798 | XboxOneTitleId:
799 | XboxOneSCId:
800 | XboxOneGameOsOverridePath:
801 | XboxOnePackagingOverridePath:
802 | XboxOneAppManifestOverridePath:
803 | XboxOneVersion: 1.0.0.0
804 | XboxOnePackageEncryption: 0
805 | XboxOnePackageUpdateGranularity: 2
806 | XboxOneDescription:
807 | XboxOneLanguage:
808 | - enus
809 | XboxOneCapability: []
810 | XboxOneGameRating: {}
811 | XboxOneIsContentPackage: 0
812 | XboxOneEnhancedXboxCompatibilityMode: 0
813 | XboxOneEnableGPUVariability: 1
814 | XboxOneSockets: {}
815 | XboxOneSplashScreen: {fileID: 0}
816 | XboxOneAllowedProductIds: []
817 | XboxOnePersistentLocalStorageSize: 0
818 | XboxOneXTitleMemory: 8
819 | XboxOneOverrideIdentityName:
820 | XboxOneOverrideIdentityPublisher:
821 | vrEditorSettings: {}
822 | cloudServicesEnabled: {}
823 | luminIcon:
824 | m_Name:
825 | m_ModelFolderPath:
826 | m_PortalFolderPath:
827 | luminCert:
828 | m_CertPath:
829 | m_SignPackage: 1
830 | luminIsChannelApp: 0
831 | luminVersion:
832 | m_VersionCode: 1
833 | m_VersionName:
834 | hmiPlayerDataPath:
835 | hmiForceSRGBBlit: 1
836 | embeddedLinuxEnableGamepadInput: 1
837 | hmiLogStartupTiming: 0
838 | hmiCpuConfiguration:
839 | apiCompatibilityLevel: 6
840 | activeInputHandler: 0
841 | windowsGamepadBackendHint: 0
842 | cloudProjectId:
843 | framebufferDepthMemorylessMode: 0
844 | qualitySettingsNames: []
845 | projectName:
846 | organizationId:
847 | cloudEnabled: 0
848 | legacyClampBlendShapeWeights: 0
849 | hmiLoadingImage: {fileID: 0}
850 | platformRequiresReadableAssets: 0
851 | virtualTexturingSupportEnabled: 0
852 | insecureHttpOption: 0
853 |
--------------------------------------------------------------------------------
/ProjectSettings/ProjectVersion.txt:
--------------------------------------------------------------------------------
1 | m_EditorVersion: 2022.3.5f1
2 | m_EditorVersionWithRevision: 2022.3.5f1 (9674261d40ee)
3 |
--------------------------------------------------------------------------------
/ProjectSettings/QualitySettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!47 &1
4 | QualitySettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 5
7 | m_CurrentQuality: 5
8 | m_QualitySettings:
9 | - serializedVersion: 3
10 | name: Very Low
11 | pixelLightCount: 0
12 | shadows: 0
13 | shadowResolution: 0
14 | shadowProjection: 1
15 | shadowCascades: 1
16 | shadowDistance: 15
17 | shadowNearPlaneOffset: 3
18 | shadowCascade2Split: 0.33333334
19 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
20 | shadowmaskMode: 0
21 | skinWeights: 1
22 | globalTextureMipmapLimit: 1
23 | textureMipmapLimitSettings: []
24 | anisotropicTextures: 0
25 | antiAliasing: 0
26 | softParticles: 0
27 | softVegetation: 0
28 | realtimeReflectionProbes: 0
29 | billboardsFaceCameraPosition: 0
30 | useLegacyDetailDistribution: 0
31 | vSyncCount: 0
32 | realtimeGICPUUsage: 25
33 | lodBias: 0.3
34 | maximumLODLevel: 0
35 | enableLODCrossFade: 1
36 | streamingMipmapsActive: 0
37 | streamingMipmapsAddAllCameras: 1
38 | streamingMipmapsMemoryBudget: 512
39 | streamingMipmapsRenderersPerFrame: 512
40 | streamingMipmapsMaxLevelReduction: 2
41 | streamingMipmapsMaxFileIORequests: 1024
42 | particleRaycastBudget: 4
43 | asyncUploadTimeSlice: 2
44 | asyncUploadBufferSize: 16
45 | asyncUploadPersistentBuffer: 1
46 | resolutionScalingFixedDPIFactor: 1
47 | customRenderPipeline: {fileID: 0}
48 | terrainQualityOverrides: 0
49 | terrainPixelError: 1
50 | terrainDetailDensityScale: 1
51 | terrainBasemapDistance: 1000
52 | terrainDetailDistance: 80
53 | terrainTreeDistance: 5000
54 | terrainBillboardStart: 50
55 | terrainFadeLength: 5
56 | terrainMaxTrees: 50
57 | excludedTargetPlatforms: []
58 | - serializedVersion: 3
59 | name: Low
60 | pixelLightCount: 0
61 | shadows: 0
62 | shadowResolution: 0
63 | shadowProjection: 1
64 | shadowCascades: 1
65 | shadowDistance: 20
66 | shadowNearPlaneOffset: 3
67 | shadowCascade2Split: 0.33333334
68 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
69 | shadowmaskMode: 0
70 | skinWeights: 2
71 | globalTextureMipmapLimit: 0
72 | textureMipmapLimitSettings: []
73 | anisotropicTextures: 0
74 | antiAliasing: 0
75 | softParticles: 0
76 | softVegetation: 0
77 | realtimeReflectionProbes: 0
78 | billboardsFaceCameraPosition: 0
79 | useLegacyDetailDistribution: 0
80 | vSyncCount: 0
81 | realtimeGICPUUsage: 25
82 | lodBias: 0.4
83 | maximumLODLevel: 0
84 | enableLODCrossFade: 1
85 | streamingMipmapsActive: 0
86 | streamingMipmapsAddAllCameras: 1
87 | streamingMipmapsMemoryBudget: 512
88 | streamingMipmapsRenderersPerFrame: 512
89 | streamingMipmapsMaxLevelReduction: 2
90 | streamingMipmapsMaxFileIORequests: 1024
91 | particleRaycastBudget: 16
92 | asyncUploadTimeSlice: 2
93 | asyncUploadBufferSize: 16
94 | asyncUploadPersistentBuffer: 1
95 | resolutionScalingFixedDPIFactor: 1
96 | customRenderPipeline: {fileID: 0}
97 | terrainQualityOverrides: 0
98 | terrainPixelError: 1
99 | terrainDetailDensityScale: 1
100 | terrainBasemapDistance: 1000
101 | terrainDetailDistance: 80
102 | terrainTreeDistance: 5000
103 | terrainBillboardStart: 50
104 | terrainFadeLength: 5
105 | terrainMaxTrees: 50
106 | excludedTargetPlatforms: []
107 | - serializedVersion: 3
108 | name: Medium
109 | pixelLightCount: 1
110 | shadows: 1
111 | shadowResolution: 0
112 | shadowProjection: 1
113 | shadowCascades: 1
114 | shadowDistance: 20
115 | shadowNearPlaneOffset: 3
116 | shadowCascade2Split: 0.33333334
117 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
118 | shadowmaskMode: 0
119 | skinWeights: 2
120 | globalTextureMipmapLimit: 0
121 | textureMipmapLimitSettings: []
122 | anisotropicTextures: 1
123 | antiAliasing: 0
124 | softParticles: 0
125 | softVegetation: 0
126 | realtimeReflectionProbes: 0
127 | billboardsFaceCameraPosition: 0
128 | useLegacyDetailDistribution: 0
129 | vSyncCount: 1
130 | realtimeGICPUUsage: 25
131 | lodBias: 0.7
132 | maximumLODLevel: 0
133 | enableLODCrossFade: 1
134 | streamingMipmapsActive: 0
135 | streamingMipmapsAddAllCameras: 1
136 | streamingMipmapsMemoryBudget: 512
137 | streamingMipmapsRenderersPerFrame: 512
138 | streamingMipmapsMaxLevelReduction: 2
139 | streamingMipmapsMaxFileIORequests: 1024
140 | particleRaycastBudget: 64
141 | asyncUploadTimeSlice: 2
142 | asyncUploadBufferSize: 16
143 | asyncUploadPersistentBuffer: 1
144 | resolutionScalingFixedDPIFactor: 1
145 | customRenderPipeline: {fileID: 0}
146 | terrainQualityOverrides: 0
147 | terrainPixelError: 1
148 | terrainDetailDensityScale: 1
149 | terrainBasemapDistance: 1000
150 | terrainDetailDistance: 80
151 | terrainTreeDistance: 5000
152 | terrainBillboardStart: 50
153 | terrainFadeLength: 5
154 | terrainMaxTrees: 50
155 | excludedTargetPlatforms: []
156 | - serializedVersion: 3
157 | name: High
158 | pixelLightCount: 2
159 | shadows: 2
160 | shadowResolution: 1
161 | shadowProjection: 1
162 | shadowCascades: 2
163 | shadowDistance: 40
164 | shadowNearPlaneOffset: 3
165 | shadowCascade2Split: 0.33333334
166 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
167 | shadowmaskMode: 1
168 | skinWeights: 2
169 | globalTextureMipmapLimit: 0
170 | textureMipmapLimitSettings: []
171 | anisotropicTextures: 1
172 | antiAliasing: 0
173 | softParticles: 0
174 | softVegetation: 1
175 | realtimeReflectionProbes: 1
176 | billboardsFaceCameraPosition: 1
177 | useLegacyDetailDistribution: 0
178 | vSyncCount: 1
179 | realtimeGICPUUsage: 50
180 | lodBias: 1
181 | maximumLODLevel: 0
182 | enableLODCrossFade: 1
183 | streamingMipmapsActive: 0
184 | streamingMipmapsAddAllCameras: 1
185 | streamingMipmapsMemoryBudget: 512
186 | streamingMipmapsRenderersPerFrame: 512
187 | streamingMipmapsMaxLevelReduction: 2
188 | streamingMipmapsMaxFileIORequests: 1024
189 | particleRaycastBudget: 256
190 | asyncUploadTimeSlice: 2
191 | asyncUploadBufferSize: 16
192 | asyncUploadPersistentBuffer: 1
193 | resolutionScalingFixedDPIFactor: 1
194 | customRenderPipeline: {fileID: 0}
195 | terrainQualityOverrides: 0
196 | terrainPixelError: 1
197 | terrainDetailDensityScale: 1
198 | terrainBasemapDistance: 1000
199 | terrainDetailDistance: 80
200 | terrainTreeDistance: 5000
201 | terrainBillboardStart: 50
202 | terrainFadeLength: 5
203 | terrainMaxTrees: 50
204 | excludedTargetPlatforms: []
205 | - serializedVersion: 3
206 | name: Very High
207 | pixelLightCount: 3
208 | shadows: 2
209 | shadowResolution: 2
210 | shadowProjection: 1
211 | shadowCascades: 2
212 | shadowDistance: 70
213 | shadowNearPlaneOffset: 3
214 | shadowCascade2Split: 0.33333334
215 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
216 | shadowmaskMode: 1
217 | skinWeights: 4
218 | globalTextureMipmapLimit: 0
219 | textureMipmapLimitSettings: []
220 | anisotropicTextures: 2
221 | antiAliasing: 2
222 | softParticles: 1
223 | softVegetation: 1
224 | realtimeReflectionProbes: 1
225 | billboardsFaceCameraPosition: 1
226 | useLegacyDetailDistribution: 0
227 | vSyncCount: 1
228 | realtimeGICPUUsage: 50
229 | lodBias: 1.5
230 | maximumLODLevel: 0
231 | enableLODCrossFade: 1
232 | streamingMipmapsActive: 0
233 | streamingMipmapsAddAllCameras: 1
234 | streamingMipmapsMemoryBudget: 512
235 | streamingMipmapsRenderersPerFrame: 512
236 | streamingMipmapsMaxLevelReduction: 2
237 | streamingMipmapsMaxFileIORequests: 1024
238 | particleRaycastBudget: 1024
239 | asyncUploadTimeSlice: 2
240 | asyncUploadBufferSize: 16
241 | asyncUploadPersistentBuffer: 1
242 | resolutionScalingFixedDPIFactor: 1
243 | customRenderPipeline: {fileID: 0}
244 | terrainQualityOverrides: 0
245 | terrainPixelError: 1
246 | terrainDetailDensityScale: 1
247 | terrainBasemapDistance: 1000
248 | terrainDetailDistance: 80
249 | terrainTreeDistance: 5000
250 | terrainBillboardStart: 50
251 | terrainFadeLength: 5
252 | terrainMaxTrees: 50
253 | excludedTargetPlatforms: []
254 | - serializedVersion: 3
255 | name: Ultra
256 | pixelLightCount: 4
257 | shadows: 2
258 | shadowResolution: 2
259 | shadowProjection: 1
260 | shadowCascades: 4
261 | shadowDistance: 150
262 | shadowNearPlaneOffset: 3
263 | shadowCascade2Split: 0.33333334
264 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
265 | shadowmaskMode: 1
266 | skinWeights: 255
267 | globalTextureMipmapLimit: 0
268 | textureMipmapLimitSettings: []
269 | anisotropicTextures: 2
270 | antiAliasing: 2
271 | softParticles: 1
272 | softVegetation: 1
273 | realtimeReflectionProbes: 1
274 | billboardsFaceCameraPosition: 1
275 | useLegacyDetailDistribution: 0
276 | vSyncCount: 1
277 | realtimeGICPUUsage: 100
278 | lodBias: 2
279 | maximumLODLevel: 0
280 | enableLODCrossFade: 1
281 | streamingMipmapsActive: 0
282 | streamingMipmapsAddAllCameras: 1
283 | streamingMipmapsMemoryBudget: 512
284 | streamingMipmapsRenderersPerFrame: 512
285 | streamingMipmapsMaxLevelReduction: 2
286 | streamingMipmapsMaxFileIORequests: 1024
287 | particleRaycastBudget: 4096
288 | asyncUploadTimeSlice: 2
289 | asyncUploadBufferSize: 16
290 | asyncUploadPersistentBuffer: 1
291 | resolutionScalingFixedDPIFactor: 1
292 | customRenderPipeline: {fileID: 0}
293 | terrainQualityOverrides: 0
294 | terrainPixelError: 1
295 | terrainDetailDensityScale: 1
296 | terrainBasemapDistance: 1000
297 | terrainDetailDistance: 80
298 | terrainTreeDistance: 5000
299 | terrainBillboardStart: 50
300 | terrainFadeLength: 5
301 | terrainMaxTrees: 50
302 | excludedTargetPlatforms: []
303 | m_TextureMipmapLimitGroupNames: []
304 | m_PerPlatformDefaultQuality:
305 | Android: 2
306 | EmbeddedLinux: 5
307 | GameCoreScarlett: 5
308 | GameCoreXboxOne: 5
309 | LinuxHeadlessSimulation: 5
310 | Nintendo Switch: 5
311 | PS4: 5
312 | PS5: 5
313 | QNX: 5
314 | Server: 5
315 | Stadia: 5
316 | Standalone: 5
317 | VisionOS: 5
318 | WebGL: 3
319 | Windows Store Apps: 5
320 | XboxOne: 5
321 | iPhone: 2
322 | tvOS: 2
323 |
--------------------------------------------------------------------------------
/ProjectSettings/TagManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!78 &1
4 | TagManager:
5 | serializedVersion: 2
6 | tags: []
7 | layers:
8 | - Default
9 | - TransparentFX
10 | - Ignore Raycast
11 | -
12 | - Water
13 | - UI
14 | -
15 | -
16 | -
17 | -
18 | -
19 | -
20 | -
21 | -
22 | -
23 | -
24 | -
25 | -
26 | -
27 | -
28 | -
29 | -
30 | -
31 | -
32 | -
33 | -
34 | -
35 | -
36 | -
37 | -
38 | -
39 | -
40 | m_SortingLayers:
41 | - name: Default
42 | uniqueID: 0
43 | locked: 0
44 |
--------------------------------------------------------------------------------
/ProjectSettings/TimeManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!5 &1
4 | TimeManager:
5 | m_ObjectHideFlags: 0
6 | Fixed Timestep: 0.02
7 | Maximum Allowed Timestep: 0.33333334
8 | m_TimeScale: 1
9 | Maximum Particle Timestep: 0.03
10 |
--------------------------------------------------------------------------------
/ProjectSettings/UnityConnectSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!310 &1
4 | UnityConnectSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 1
7 | m_Enabled: 0
8 | m_TestMode: 0
9 | m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events
10 | m_EventUrl: https://cdp.cloud.unity3d.com/v1/events
11 | m_ConfigUrl: https://config.uca.cloud.unity3d.com
12 | m_DashboardUrl: https://dashboard.unity3d.com
13 | m_TestInitMode: 0
14 | CrashReportingSettings:
15 | m_EventUrl: https://perf-events.cloud.unity3d.com
16 | m_Enabled: 0
17 | m_LogBufferSize: 10
18 | m_CaptureEditorExceptions: 1
19 | UnityPurchasingSettings:
20 | m_Enabled: 0
21 | m_TestMode: 0
22 | UnityAnalyticsSettings:
23 | m_Enabled: 0
24 | m_TestMode: 0
25 | m_InitializeOnStartup: 1
26 | m_PackageRequiringCoreStatsPresent: 0
27 | UnityAdsSettings:
28 | m_Enabled: 0
29 | m_InitializeOnStartup: 1
30 | m_TestMode: 0
31 | m_IosGameId:
32 | m_AndroidGameId:
33 | m_GameIds: {}
34 | m_GameId:
35 | PerformanceReportingSettings:
36 | m_Enabled: 0
37 |
--------------------------------------------------------------------------------
/ProjectSettings/VFXManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!937362698 &1
4 | VFXManager:
5 | m_ObjectHideFlags: 0
6 | m_IndirectShader: {fileID: 0}
7 | m_CopyBufferShader: {fileID: 0}
8 | m_SortShader: {fileID: 0}
9 | m_StripUpdateShader: {fileID: 0}
10 | m_RenderPipeSettingsPath:
11 | m_FixedTimeStep: 0.016666668
12 | m_MaxDeltaTime: 0.05
13 | m_MaxScrubTime: 30
14 | m_CompiledVersion: 0
15 | m_RuntimeVersion: 0
16 | m_RuntimeResources: {fileID: 0}
17 | m_BatchEmptyLifetime: 300
18 |
--------------------------------------------------------------------------------
/ProjectSettings/VersionControlSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!890905787 &1
4 | VersionControlSettings:
5 | m_ObjectHideFlags: 0
6 | m_Mode: Visible Meta Files
7 | m_CollabEditorSettings:
8 | inProgressEnabled: 1
9 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Unity Audio Loader
2 |
3 |  [](https://openupm.com/packages/extensions.unity.audioloader/)  [](https://stand-with-ukraine.pp.ua)
4 |
5 | Async audio loader with two caching layers for Unity.
6 |
7 | 
8 |
9 | ## Features
10 |
11 | - ✔️ Async loading from **Web** or **Local** `AudioLoader.LoadAudioClip(audioURL);`
12 | - ✔️ **Memory** and **Disk** caching - tries to load from memory first, then from disk
13 | - ✔️ Dedicated thread for disk operations
14 | - ✔️ 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
15 | - ✔️ Auto set to AudioSource `AudioLoader.SetAudioSource(audioURL, audioSource);`
16 | - ✔️ Debug level for logging `AudioLoader.settings.debugLevel = DebugLevel.Error;`
17 |
18 | # Usage
19 |
20 | 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.
21 |
22 | ## Sample - Loading audio file, set to AudioSource
23 |
24 | ``` C#
25 | using Extensions.Unity.AudioLoader;
26 | using Cysharp.Threading.Tasks;
27 |
28 | public class AudioLoaderSample : MonoBehaviour
29 | {
30 | [SerializeField] string audioURL;
31 | [SerializeField] AudioSource audioSource;
32 |
33 | async void Start()
34 | {
35 | // Loading audio file from web, cached for quick load next time
36 | audioSource.clip = await AudioLoader.LoadAudioClip(audioURL);
37 |
38 | // Same loading with auto set to audio
39 | await AudioLoader.SetAudioSource(audioURL, audioSource);
40 | }
41 | }
42 | ```
43 |
44 | ## Sample - Loading audio into multiple Audio components
45 |
46 | ``` C#
47 | using Extensions.Unity.AudioLoader;
48 | using Cysharp.Threading.Tasks;
49 |
50 | public class AudioLoaderSample : MonoBehaviour
51 | {
52 | [SerializeField] string audioURL;
53 | [SerializeField] AudioSource audioSource1;
54 | [SerializeField] AudioSource audioSource2;
55 |
56 | void Start()
57 | {
58 | // Loading with auto set to audio
59 | AudioLoader.SetAudioSource(audioURL, audioSource1, audioSource2).Forget();
60 | }
61 | }
62 | ```
63 |
64 | # Cache
65 |
66 | 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.
67 |
68 | ## Setup Cache
69 |
70 | - `AudioLoader.settings.useMemoryCache = true;` default value is `true`
71 | - `AudioLoader.settings.useDiskCache = true;` default value is `true`
72 |
73 | Change disk cache folder:
74 |
75 | ``` C#
76 | AudioLoader.settings.diskSaveLocation = Application.persistentDataPath + "/myCustomFolder";
77 | ```
78 |
79 | ## Override Cache
80 |
81 | ``` C#
82 | // Override Memory cache for specific audio
83 | AudioLoader.SaveToMemoryCache(url, audioClip);
84 |
85 | // Take from Memory cache for specific audio file if exists
86 | AudioLoader.LoadFromMemoryCache(url);
87 | ```
88 |
89 | ## Does Cache contain audio
90 |
91 | ``` C#
92 | // Check if any cache contains specific audio file
93 | AudioLoader.CacheContains(url);
94 |
95 | // Check if Memory cache contains specific audio file
96 | AudioLoader.MemoryCacheContains(url);
97 |
98 | // Check if Memory cache contains specific audio file
99 | AudioLoader.DiskCacheContains(url);
100 | ```
101 |
102 | ## Clear Cache
103 |
104 | ``` C#
105 | // Clear memory Memory and Disk cache
106 | AudioLoader.ClearCache();
107 |
108 | // Clear only Memory cache for all audio files
109 | AudioLoader.ClearMemoryCache();
110 |
111 | // Clear only Memory cache for specific audio file
112 | AudioLoader.ClearMemoryCache(url);
113 |
114 | // Clear only Disk cache for all audio files
115 | AudioLoader.ClearDiskCache();
116 |
117 | // Clear only Disk cache for specific audio file
118 | AudioLoader.ClearDiskCache(url);
119 | ```
120 |
121 | # Installation
122 |
123 | - [Install OpenUPM-CLI](https://github.com/openupm/openupm-cli#installation)
124 | - Open command line in Unity project folder
125 | - Run the command
126 |
127 | ``` CLI
128 | openupm add extensions.unity.audioloader
129 | ```
130 |
--------------------------------------------------------------------------------
/Test Audio Files/sample.aiff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IvanMurzak/Unity-AudioLoader/432c13650ce3567ca9778fbb0fd7553a9e71563d/Test Audio Files/sample.aiff
--------------------------------------------------------------------------------
/Test Audio Files/sample.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IvanMurzak/Unity-AudioLoader/432c13650ce3567ca9778fbb0fd7553a9e71563d/Test Audio Files/sample.mp3
--------------------------------------------------------------------------------
/Test Audio Files/sample.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IvanMurzak/Unity-AudioLoader/432c13650ce3567ca9778fbb0fd7553a9e71563d/Test Audio Files/sample.wav
--------------------------------------------------------------------------------
/UserSettings/EditorUserSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!162 &1
4 | EditorUserSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 4
7 | m_ConfigSettings:
8 | vcSharedLogLevel:
9 | value: 0d5e400f0650
10 | flags: 0
11 | m_VCAutomaticAdd: 1
12 | m_VCDebugCom: 0
13 | m_VCDebugCmd: 0
14 | m_VCDebugOut: 0
15 | m_SemanticMergeMode: 2
16 | m_DesiredImportWorkerCount: 8
17 | m_StandbyImportWorkerCount: 2
18 | m_IdleImportWorkerShutdownDelay: 60000
19 | m_VCShowFailedCheckout: 1
20 | m_VCOverwriteFailedCheckoutAssets: 1
21 | m_VCProjectOverlayIcons: 1
22 | m_VCHierarchyOverlayIcons: 1
23 | m_VCOtherOverlayIcons: 1
24 | m_VCAllowAsyncUpdate: 1
25 | m_ArtifactGarbageCollection: 1
26 |
--------------------------------------------------------------------------------
/UserSettings/Search.index:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Assets",
3 | "roots": ["Assets"],
4 | "includes": [],
5 | "excludes": [],
6 | "options": {
7 | "types": true,
8 | "properties": true,
9 | "extended": false,
10 | "dependencies": false
11 | },
12 | "baseScore": 999
13 | }
--------------------------------------------------------------------------------
/UserSettings/Search.settings:
--------------------------------------------------------------------------------
1 | trackSelection = true
2 | refreshSearchWindowsInPlayMode = false
3 | fetchPreview = true
4 | defaultFlags = 0
5 | keepOpen = false
6 | queryFolder = "Assets"
7 | onBoardingDoNotAskAgain = true
8 | showPackageIndexes = false
9 | showStatusBar = false
10 | scopes = {
11 | }
12 | providers = {
13 | adb = {
14 | active = false
15 | priority = 2500
16 | defaultAction = null
17 | }
18 | log = {
19 | active = false
20 | priority = 210
21 | defaultAction = null
22 | }
23 | performance = {
24 | active = false
25 | priority = 100
26 | defaultAction = null
27 | }
28 | store = {
29 | active = true
30 | priority = 100
31 | defaultAction = null
32 | }
33 | profilermarkers = {
34 | active = false
35 | priority = 100
36 | defaultAction = null
37 | }
38 | scene = {
39 | active = true
40 | priority = 50
41 | defaultAction = null
42 | }
43 | find = {
44 | active = true
45 | priority = 25
46 | defaultAction = null
47 | }
48 | packages = {
49 | active = true
50 | priority = 90
51 | defaultAction = null
52 | }
53 | asset = {
54 | active = true
55 | priority = 25
56 | defaultAction = null
57 | }
58 | }
59 | objectSelectors = {
60 | }
61 | recentSearches = [
62 | ]
63 | searchItemFavorites = [
64 | ]
65 | savedSearchesSortOrder = 0
66 | showSavedSearchPanel = false
67 | hideTabs = false
68 | expandedQueries = [
69 | ]
70 | queryBuilder = false
71 | ignoredProperties = "id;name;classname;imagecontentshash"
72 | helperWidgetCurrentArea = "all"
73 | disabledIndexers = ""
74 | minIndexVariations = 2
75 | findProviderIndexHelper = true
--------------------------------------------------------------------------------