Giter Site home page Giter Site logo

quarkasset's Introduction

License: MIT Issues:Welcome

QuarkAsset

QuarkAsset是一套轻量级的插件化Unity资源加载方案。 内置AssetDatabae与AssetBundle加载模式。加载模式皆支持引用计数,可实时查看资源信息。快速开发阶段可采用AssetDatabase模式,无需进行ab构建。调试阶段可采用AssetBundle模式,轻松构建ab资源。在构建ab时,支持对资源的加密。在Runtime加载资源时,可通过对应的密钥对资源进行解密。内置BuildPipeline,可通过命令行实现自动化资源构建。Jenkins自动化部署测试已通过。


标题导航

UPM支持

  • QuarkAsset是完全插件化的unity库,文件夹结构遵循unityPackage规范。

  • UPM本地导入。选择Assets/QuarkAsset文件夹,拷贝到工程目录的Packages目录下,完成导入。

  • UPM从git导入。url链接: https://github.com/DonnYep/QuarkAsset.git#upm

QuarkEditor编辑器

  • Quark编辑器打开路径为Window>QuarkAsset>QuarkAssetEdior

  • 为实现团队协作,且灵活配置资源,Quark采用了scriptableObject作为资源寻址配置。

  • 配置文件可在Quark的编辑器最上方,点击CreateDataset生成。

  • 为方便阐述,下文统一采用dataset称呼Quark的资源寻址配置。

  • Quark编辑器一共含三个选项卡,分别为:AssetDatabaseTabAssetBundleTabAssetDatasetTab

  • AssetDatabaseTab用于为dataset设置assetbundle与生成资源寻址信息.

  • AssetBundleTab用于为dataset生成assetbundle资源与相关处理。

  • AssetDatasetTab用于为dataset设置可识别的文件后缀名。

AssetDatabaseTab-BundleLabel

Quark_AssetDatabaseTab_BundleLabel

  • 此页面显示dataset中包含的AssetBundle信息。

设置AssetBundle

  • 将需要被打包为ab的文件夹或资源拖拽入bundle label窗口,被拖入的资源会自动生成ab名称。点击上方Build按钮,完成dataset资源识别。

  • 每一条bundle信息都可通过点击右键生成的菜单进行操作。

AssetDatabaseTab-ObjectLabel

Quark_AssetDatabaseTab_ObjectLabel

  • 此页面显示dataset中包含的AssetObject信息。

  • 每一条object信息都可通过点击右键生成的菜单进行操作。

AssetBundleTab

Quark_AssetBundleTab

  • 此Tab用于ab打包操作。

  • 打包ab时需要选择ab所对应的平台。若需要拷贝到streamingAssets文件夹,则勾选CopyToStreamingAssets选项。

  • 其余可选择使用默认预设。

AssetDatasetTab

Quark_AssetDatasetTab

  • Dataset通过文件后缀名进行识别。 若需要自定义识别文件的后缀名,则可在此页面对文件后缀名列表进行增删操作。

QuarkRuntime入口-QuarkConfig

  • 选择合适初始化入口,挂载QuarkConfig脚本。

未选择加载模式

QuarkConfig_None

AssetDatabase加载模式

QuarkConfig_AssetDatabase

  • QuarkAssetDataset赋予build好的dataset,即完成配置。

AssetBundle加载模式

QuarkConfig_AssetBundle

  • AssetBundle模式下默认采用StreamingAssets路径加载。

  • 若build后的ab文件处于StreamingAssets目录下的其他路径,勾选EnableRelativeBuildPath选项。勾选EnableRelativeBuildPath表示为采用StreamingAssets目录下的相对路径进行加载,需要在RelativeBuildPath中填入相对路径的地址。

  • 若在资源构建阶段进行了加密,则在Encryption折叠选项下填入对应的密钥与数字,Quark会在runtime自动解密。


QuarkRuntime加载

  • Quark的加载类为QuarkResources,对应unity的Resources。

  • 加载资源时输入的名称可采用以下三种范式:

    • 1、资源名。
    • 2、资源名.后缀
    • 3、资源路径
  • 加载时请注意以下内容:

    • 1、资源名大小写敏感的资源名 。示例:MyAudio
    • 2、后缀名大小写不敏感。示例:MyAudio.mp3或MyAudio.MP3
    • 3、资源路径大小写敏感,地址须以Assets/开头。示例:Assets/Audio/MyAudio.mp3。采用地址加载时,后缀名需要小写。

QuarkRuntime应用实例

自定义入口实例

using Quark;
using UnityEngine;
[DefaultExecutionOrder(-2000)]//建议延后入口执行优先级
public class GameLauncher : MonoBehaviour
{
    private void Awake()
    {
        QuarkResources.OnCompareManifestSuccess += OnCompareManifestSuccess;
        QuarkResources.OnCompareManifestFailure += OnCompareManifestFailure; 
    }
    private void Start()
    {
        if (QuarkResources.QuarkAssetLoadMode == QuarkLoadMode.AssetDatabase)
        {
            InitGame();
        }
    }
    private void OnCompareManifestSuccess(long size)
    {
        if (QuarkResources.QuarkAssetLoadMode == QuarkLoadMode.AssetBundle)
        {
            InitGame();
        }
    }
    private void OnCompareManifestFailure(string message)
    {
       //这里表示文件清单未被读取到,需要检查build后的文件是否存在以及路径是否正确
    }
    void InitGame()
    {
        //Quark资源初始化成功,可进行初始化!
    }
}

QuarkResources加载

QuarkResources同步加载

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

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
});

BuildPipeline

  • Quark支持自动化流水线部署,支持Jenkins等类型的命令行打包。

打包配置

  • 选择一个项目中使用的QuarkAssetDataset类型文件,将文件名更改为QuarkAssetDataset后,放到Assets根目录下。放置完毕后路径应与如下相同。
Assets/QuarkAssetDataset.asset

命令行打包

  • 命令行可调用的API如下:
//对当前活跃平台的资源进行打包
QuarkBuildPipeline.BuildActivePlatformAssetBundle();
//打包指定平台的资源
QuarkBuildPipeline.BuildAssetBundle(BuildTarget buildTarget);

注意事项

  • 若在编辑器环境下对AB进行构建,为使得构建的资源准确无误,建议每次都手动清理StreamingAssets下的文件夹。

  • 自动化部署构建资源请根据打包策略选择合适的清理方式。建议采用所有资源重新构建的策略。

  • 当前自动化版本未做加密支持。

回到最上层

quarkasset's People

Contributors

donnyep avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.