io.nekonya.tinax.vfs
Version:
TinaX Framework Assets Manager System - Virtual File System.
203 lines (135 loc) • 5.97 kB
Markdown
# TinaX Framework - Virtual Files System.
<img src="https://github.com/yomunsam/TinaX.Core/raw/master/readme_res/logo.png" width = "360" height = "160" alt="logo" align=center />
[-blue.svg)](https://github.com/996icu/996.ICU/blob/master/LICENSE)
<a href="https://996.icu"><img src="https://img.shields.io/badge/link-996.icu-red.svg" alt="996.icu"></a>
[](https://github.com/yomunsam/TinaX/blob/master/LICENSE)
<!-- [](https://github.com/yomunsam/TinaX/blob/master/LICENSE) -->
TinaX is a Unity-based framework, simple , complete and delightful, ready to use. TinaX provides functionality in the form of "Unity packages".
`TinaX.VFS` is the default assets management serivce package of TinaX Framework.
- Load assets according to "unity asset path:. And keep it consistent after editor and release
- Non-aware AssetBundle management
- AssetBundle packaging
- Assets hot update
<br>
package name: `io.nekonya.tinax.vfs`
<br>
"Readme" in other languages :
- [简体中文](README_CN.md)
<br>
------
## QuickStart
The main service interface of VFS:
``` csharp
TinaX.VFSKit.IVFS
```
Facade of the main service interface:
``` csharp
TinaX.VFSKit.VFS
```
Load asset.
``` csharp
IAsset txt_asset = vfs.LoadAsset<TextAsset>("Assets/Data/demo.json"); //The object "vfs" (type: IVFS) can be obtained through dependency injection. or use facade.
TextAsset myText = txt_asset.Get<TextAsset>();
//or TextAsset myText = txt_asset.Asset as TextAsset;
Debug.Log(myText.text);
txt_asset.Release(); //After use, notify vfs to release
```
<br>
Load asset async (async/await)
``` csharp
IAsset txt_asset = await vfs.LoadAssetAsync<TextAsset>("Assets/Data/demo.json")
//The object "vfs" (type: IVFS) can be obtained through dependency injection. or use facade.
Debug.Log(txt_asset.Get<TextAsset>().text);
txt_asset.Release();
```
<br>
Load asset async (callback)
``` csharp
vfs.LoadAssetAsync("Assets/Data/demo.json", typeof(TextAsset), (txt, err) =>
{
//The object "vfs" (type: IVFS) can be obtained through dependency injection. or use facade.
if (err == null)
{
Debug.Log(txt.Get<TextAsset>().text);
txt.Release();
}
});
```
<br>
Simplify "IAsset.Release()"
``` csharp
using(txt_asset = await vfs.LoadAssetAsync<TextAsset>("Assets/Data/demo.json"))
{
Debug.Log(txt_asset.Get<TextAsset>().text);
}
//The object "vfs" (type: IVFS) can be obtained through dependency injection. or use facade.
```
<br>
Not load `IAsset` interface, but directly load asset.
``` csharp
TextAsset myText = vfs.LoadAsync<TextAsset>("Assets/Data/demo.json");
//The object "vfs" (type: IVFS) can be obtained through dependency injection. or use facade.
Debug.Log(myText.text);
vfs.Release(myText);
```
For other usages, please read the [documentation](https://tinax.corala.space).
<br>
------
## Install this package
### Install via [openupm](https://openupm.com/)
``` bash
# Install openupm-cli if not installed.
npm install -g openupm-cli
# OR yarn global add openupm-cli
#run install in your project root folder
openupm add io.nekonya.tinax.vfs
```
<br>
### Install via npm (UPM)
Modify `Packages/manifest.json` file in your project, and add the following code before "dependencies" node of this file:
``` json
"scopedRegistries": [
{
"name": "TinaX",
"url": "https://registry.npmjs.org",
"scopes": [
"io.nekonya"
]
},
{
"name": "package.openupm.com",
"url": "https://package.openupm.com",
"scopes": [
"com.cysharp.unitask",
"com.neuecc.unirx"
]
}
],
```
If after doing the above, you still cannot find the relevant Packages for TinaX in the "Unity Package Manager" window, You can also try refreshing, restarting the editor, or manually adding the following configuration to "dependencies" node.
``` json
"io.nekonya.tinax.vfs" : "6.6.3"
```
<br>
### Install via git UPM:
You can use the following to install and use this package in UPM GUI.
```
git://github.com/yomunsam/TinaX.VFS.git
```
If you want to set a target version, you can use release tag like `#6.6.3`. for detail you can see this page: [https://github.com/yomunsam/TinaX.VFS/releases](https://github.com/yomunsam/TinaX.VFS/releases)
<br><br>
------
## Dependencies
- [com.neuecc.unirx](https://github.com/neuecc/UniRx#upm-package) :`https://github.com/neuecc/UniRx.git?path=Assets/Plugins/UniRx/Scripts`
- [com.cysharp.unitask](https://github.com/Cysharp/UniTask#install-via-git-url) :`https://github.com/Cysharp/UniTask.git?path=src/UniTask/Assets/Plugins/UniTask`
- [io.nekonya.tinax.core](https://github.com/yomunsam/tinax.core) :`git://github.com/yomunsam/TinaX.Core.git`
> if you install packages by git UPM, You need to install the dependencies manually. Or dependencies will installed automatically by NPM / OpenUPM
<br><br>
------
## Learn TinaX
You can find out how to use the various features of TinaX in the [documentation](https://tinax.corala.space)
------
## Third-Party
The following excellent third-party libraries are used in this project:
- **[UniRx](https://github.com/neuecc/UniRx)** : Reactive Extensions for Unity
- **[UniTask](https://github.com/Cysharp/UniTask)** : Provides an efficient async/await integration to Unity.