【YooAsset】

https://www.jianshu.com/p/df7cfa6d0ec3 [Unity 3D] 盘点 Github 上的那些 AssetBundle 框架(XAsset、TinaX.VFS、QFramework.ResKit、Game Framework.Resource、KSFramework-ResourceModule、BundleMaster、CatAsset、zcode-AssetBundlePacker、YooAsset、ABSystem、AssetBundleLoadManager、fuxi (伏羲)、外国友人)
AssetBundle 资源打包
Jenkins 支持 自动化构建
输入:yooAsset
输出:项目使用
教程链接:YooAsset系列教程 1.2 全局配置_哔哩哔哩_bilibili
下载工程链接:https://github.com/tuyoogame/YooAsset
下载案例链接:https://github.com/tuyoogame
unity版本:Unity2019.4+

系统的特点

安全高效的分包方案
灵活的打包系统
引用计数的管理方案:实现安全的资源卸载策略、对内存管理,变资源对象的冗余以及潜在资源泄漏问题
多种模式的自由切换:单机,联机
加载系统:同步加载、异步加载、边玩边下载、多线程下载、多功能下载器
原生格式文件管理
灵活多变的版本管理
可寻址资源定位
构建管线无缝衔接

下载安装

通过PackageManager安装
操作:(Edit/Project Settings/Package Manager)
Name: package.openupm.cn
URL: https://package.openupm.cn
Scope(s): com.tuyoogame.yooasset

目录结构

Assets
└─ YooAsset
├─ Editor 编辑器源码目录
├─ Runtime 运行时源码目录
├─ CHANGELOG
├─ LICENSE 版权文档
├─package
└─ README 说明文档

全局配置

注意:请将配置文件放在Resources文件夹下
操作:(Project窗体内右键 -> Create -> YooAsset -> Create Setting)
配置说明:
Asset Bundle File Variant : AssetBundle资源包后缀名
Raw File Variant : 原生资源包后缀名
Patch Manifest File Name : 补丁清单文件名称

资源收集

资源包收集工具—修复 导入 导出 Save Show Packages Enable Addressable
分组列表:
Level (关卡资源)
Buildin (内置资源)
Other (其他资源)
Art (美术资源)
该分组分配置界面:
Collector Assets/GameRes/Entity/Level1/footman_Blue.prefab

导出按钮:
将配置数据导出XML文件 导入按钮: 导入保存的XML文件

公共设置:
Show Packages: Enalble Addressable:启用可寻址资源定位系统

资源分组:
Active Rule Grouper Name Grouper Desc Asset Tags
资源收集器:
Collect Path收集路径
Collect Type收集类型
AddressRule可寻址规则
PackRule打包规则(PackSeparately、PackDirectory、PackCollector、PackGrouper、PackRawFile)
FilterRule过滤规则
AssetTags资源分类标签列表

导入XML配置文件
【YooAsset】_第1张图片

资源构建

操作:YooAsset->AssetBundle Build
编写继承IEncryptionServices接口的加密类。注意:加密类文件需要放置在Editor文件夹里。

using System;
using YooAsset.Editor;

public class GameEncryption : IEncryptionServices
{
    /// 
    /// 检测资源包是否需要加密
    /// 
    bool IEncryptionServices.Check(string bundleName)
    {
        // 对配置表相关的资源包进行加密
        return bundleName.Contains("assets/config/");
    }

    /// 
    /// 对数据进行加密,并返回加密后的数据
    /// 
    byte[] IEncryptionServices.Encrypt(byte[] fileData)
    {
        int offset = 32;
        var temper = new byte[fileData.Length + offset];
        Buffer.BlockCopy(fileData, 0, temper, offset, fileData.Length);
        return temper;
    }
}

你可能感兴趣的:(unity引擎,unity,游戏引擎)