Home

Awesome

License: MIT Issues:Welcome

QuarkAsset

QuarkAsset是一套轻量级的插件化Unity资源加载方案。 内置AssetDatabae与AssetBundle加载模式。加载模式皆支持引用计数,可实时查看资源信息。快速开发阶段可采用AssetDatabase模式,无需进行ab构建。调试阶段可采用AssetBundle模式,轻松构建ab资源。在构建ab时,支持对资源的加密。在Runtime加载资源时,可通过对应的密钥对资源进行解密。支持编辑内对包体分割,有效控制颗粒度。支持查看ab的依赖关系。内置BuildPipeline,可通过命令行实现自动化资源构建。支持构建预设,可版本控制构建profile预设。Jenkins自动化部署测试已通过。


<a name="标题导航"></a>

标题导航


<a name="UPM支持"></a>

UPM支持


<a name="QuarkEditor编辑器"></a>

QuarkEditor编辑器

<a name="QuarkEditor-AssetDatabaseTab"></a>

AssetDatabaseTab

Quark_AssetDatabaseTab

<a name="设置AssetBundle"></a>

  设置AssetBundle

<a name="查看AssetBundle中的资源"></a>

  查看AssetBundle中的资源

<a name="查看AssetBundle依赖"></a>

  查看AssetBundle依赖

<a name="拆分AssetBundle"></a>

  拆分AssetBundle

<a name="依据子文件夹拆分"></a>

    依据子文件夹拆分
<br>

<a name="依据每个资源个体拆分"></a>

    依据每个资源个体拆分
<div style="border-top: 1px solid black; margin-top: 20px; margin-bottom: 20px;"></div>

<a name="QuarkEditor-AssetBundleTab"></a>

AssetBundleTab

<a name="使用本地设置"></a>

  使用本地设置

<a name="使用构建预设"></a>

  使用构建预设

<br> <br> <div style="border-top: 1px solid black; margin-top: 20px; margin-bottom: 20px;"></div>

<a name="QuarkEditor-AssetDatasetTab"></a>

AssetDatasetTab

Quark_AssetDatasetTab


<a name="QuarkRuntime入口"></a>

QuarkRuntime入口-QuarkConfig

<a name="QuarkConfig未选择加载模式"></a>

未选择加载模式

QuarkConfig_None

<div style="border-top: 1px solid black; margin-top: 20px; margin-bottom: 20px;"></div>

<a name="QuarkConfig-AssetDatabase加载模式"></a>

AssetDatabase加载模式

QuarkConfig_AssetDatabase

<div style="border-top: 1px solid black; margin-top: 20px; margin-bottom: 20px;"></div>

<a name="QuarkConfig-AssetBundle加载模式"></a>

AssetBundle加载模式

QuarkConfig_AssetBundle


<a name="QuarkRuntime应用实例"></a>

QuarkRuntime应用实例

<a name="自定义入口实例"></a>

自定义入口实例

using Quark;
using Quark.Asset;
using System.IO;
using UnityEngine;
public class MyLauncher : MonoBehaviour
{
    /// <summary>
    /// QuarkAssetLoadMode下AssetDatabase模式所需的寻址数据。
    /// <see cref="Quark.QuarkLoadMode"/>
    /// </summary>
    [SerializeField] QuarkDataset quarkDataset;
    /// <summary>
    /// ab Build 的相对地址。
    /// </summary>
    [SerializeField] string streamingRelativeBuildPath;
    /// <summary>
    /// 对称加密密钥。
    /// </summary>
    [SerializeField] string manifestAesKey;
    /// <summary>
    /// 加密偏移量。
    /// </summary>
    [SerializeField] ulong encryptionOffset;
    private void Start()
    {
        //根据需要调用函数
    }
    void LanchAssetBundleMode()
    {
        //以AssetBundle模式启动
        var myPath = Path.Combine(Application.streamingAssetsPath, streamingRelativeBuildPath);
        QuarkResources.LaunchAssetBundleMode(myPath, () =>
        {
                //启动成功,进入游戏逻辑
            }, (errorMsg) =>
            {
                //启动失败,处理异常
            }, manifestAesKey, encryptionOffset);
    }
    void LanchAssetDatabaseMode()
    {
        //以AssetDatabase(unity editor 调试)模式启动。
        QuarkResources.LaunchAssetDatabaseMode(quarkDataset, () =>
        {
                //启动成功,进入游戏逻辑
            }, (errorMsg) =>
            {
                //启动失败,处理异常
            });
    }
}

<a name="QuarkRuntime"></a>

QuarkRuntime

<a name="QuarkResources加载"></a>

QuarkResources加载

<a name="QuarkResources同步加载"></a>

  QuarkResources同步加载

var myAudio = QuarkResources.LoadAsset<AudioClip>("MyAudio");// 资源名加载
var myText = QuarkResources.LoadAsset<TextAsset>("MyText.json");//资源名.后缀名加载
var myTexture = QuarkResources.LoadAsset<Texture>("Assets/Textures/MyTexture.png");//完整路径加载。注意路径需要采用 / ,\\不支持!

<a name="QuarkResources异步加载"></a>

  QuarkResources异步加载

QuarkResources.LoadAssetAsync<AudioClip>("MyAudio",res=> 
    //加载完成回调,获取资源, do sth
});
QuarkResources.LoadAssetAsync<TextAsset>("MyText.json",res=> 
{
    //加载完成回调,获取资源, do sth
});
QuarkResources.LoadAssetAsync<Texture>("Assets/Textures/MyTexture.png",res=> 
{
    //加载完成回调,获取资源, do sth
});
//异步加载场景
QuarkResources.LoadSceneAsync("MyScene",progress=>{Debug.Log(progress);},()=>{Debug.Log("Load Done");},false);

<a name="QuarkResources卸载"></a>

QuarkResources卸载

<a name="QuarkResources资源单个卸载"></a>

  QuarkResources卸载单个资源

//资源名卸载单个资源
QuarkResources.UnloadAsset("MyAudio"); 
//资源名.后缀卸载单个资源
QuarkResources.UnloadAsset("MyText.json"); 
//资源路径卸载单个资源
QuarkResources.UnloadAsset("Assets/Textures/MyTexture.png"); 
//卸载场景
QuarkResources.UnloadSceneAsync("MyScene",progress=>{Debug.Log(progress);},()=>{Debug.Log("Unload Done")); 

<a name="QuarkResources卸载assetbundle"></a>

  QuarkResources卸载assetbundle

//卸载assetbundle
QuarkResources.UnloadAssetBundle("MyBundle",true); 
<div style="border-top: 1px solid black; margin-top: 20px; margin-bottom: 20px;"></div>

<a name="QuarkResources获取资源信息"></a>

QuarkResources获取资源信息

  //获取单个资源的状态信息
  QuarkResources.GetObjectInfo(myAssetName, out var info);

<a name="QuarkResources获取包体信息"></a>

QuarkResources获取包体信息

  //获取一个包体的状态信息
  QuarkResources.GetBundleInfo(myBundleName, out var info);

<a name="BuildPipeline"></a>

BuildPipeline

<a name="打包配置"></a>

打包配置

Assets/QuarkAssetDataset.asset

<a name="命令行打包"></a>

命令行打包

//打包指定平台的资源
QuarkBuildPipeline.BuildAssetBundle(BuildTarget buildTarget);
//通过预设进行构建
QuarkBuildPipeline.BuildAssetBundleByProfile(string datasetPath, string buildProfilePath);

<a name="差量更新"></a>

差量更新

<a name="文件清单合并"></a>

文件清单合并

QuarkUtility.Manifest.MergeManifest(srcManifest,diffManifest,out var mergedManifest);

<a name="注意事项"></a>

注意事项

回到最上层