首页 > 其他分享 >AssetBundle上层框架

AssetBundle上层框架

时间:2024-06-15 12:54:06浏览次数:25  
标签:文件 AB ResourceManager 框架 Url AssetBundle AResource 上层 加载

项目地址:

YuanJinSen/Demo: Ghost Runner (github.com)

原因

Unity自带的AssetBundle拥有一个巨大的缺点:

比方说我只想要物体A,但A存在于一个巨大的AB包内,想加载A就必须下载一堆无关的东西。

因此有了该上层框架,可以做到,像Resource那样去加载物体,我只加载A。

加载:

卸载:

整体逻辑

打包时:

窗口工具:调用Builder.Build

Builder:选择平台,初始化BuildSetting打包设置,搜集打包对象,打包,回收多余对象,将Manifest文件打包

BuildSetting:根据策划的配置进行路径初始化和文件搜集,使用Directory.GetFiles获取给文件夹下所有的文件的Url,并存进HashSet<string> files中

Builder.Collect:根据上一步搜集到的所有路径进行操作/获取文件依赖,进行文件分类/搜集需要打的包/生成Manifest

  Resource:来自Dic<文件名,文件类型>,将files所有对象存进去,并生成ResourceTxt、ResourceByte文件

  Bundle:来自Dic<包路径,List<包内容文件>>,将包和包内容对应地存起来,并生成BundleTxt、BundleByte文件

  Dependency:来自Dic<文件名,List<文件依赖>>,将文件和文件依赖对应地存起来,并生成DependencyTxt、DependencyByte文件

Builder.ClearAssetBundle:获取所有打好的包,会有多余的依赖包,将这些包回收

Builder.BuildManifest:打包ResourceByte、BundleByte、DependencyByte进一个AB包,用于初始化时读取

初始化

某个Mono的Start:ResourceManager.Init()

ResourceManager:BundleManager.Init()

BundleManager:加载Manifest文件,所有的包都是该包的依赖,后续所有的包都从该文件中读取

ResourceManager:读取打包时最后一步打的Manifest包,将ResourceByte、BundleByte、DependencyByte解码出来,并存起来

运行时:

发起者:调用ResourceManager.Load,传递Url

ResourceManager:new一个AResource用于存放资源,调用AResource.Load,传递Url

AResource:根据Url查询AB包Url,并调用BundleManager.Load,传递AB包Url

BundleManager:new一个ABundle拥有存放AB包,调用AResource.Load,传递AB包Url

ABundle:根据AB包Url加载AB包,缓存,通过BundleManager返回包给AResource

AResource:在ABundle中加载目标Url对象,缓存,通过ResourceManager返回对象给发起者

--------------------------------------------------------------------------------------------------------------------------------------------------------

还有很多细节,比如说缓存、卸载、依赖、异步等等

标签:文件,AB,ResourceManager,框架,Url,AssetBundle,AResource,上层,加载
From: https://www.cnblogs.com/LateUpdate/p/18249044

相关文章

  • pytest + yaml 框架 -61.jenkins+allure+钉钉通知添加测试结果
    前言上一篇pytest+yaml框架-60.git+jenkins+allure+钉钉通知反馈已经实现测试结果用钉钉通知。本篇继续在钉钉通知里添加测试的汇总结果,此功能在pytest-yaml-yoyov1.5.2版本上实现。EnvironmentInjector插件在运行完用例后会生成一个summary.json文件,汇总测试......
  • Spring框架的原理及应用详解(一)
    本系列文章简介:        在当今的软件开发世界中,随着应用复杂性的不断增加和技术的快速发展,传统的编程方式已经难以满足快速迭代、高可扩展性和易于维护的需求。为此,开发者们一直在寻求更加高效、灵活且易于管理的开发框架,以帮助他们应对这些挑战。Spring框架就是在这......
  • Spring框架的原理及应用详解(二)
    本系列文章简介:        在当今的软件开发世界中,随着应用复杂性的不断增加和技术的快速发展,传统的编程方式已经难以满足快速迭代、高可扩展性和易于维护的需求。为此,开发者们一直在寻求更加高效、灵活且易于管理的开发框架,以帮助他们应对这些挑战。Spring框架就是在这......
  • java web 开发框架编
    学习web框架上开发需要的是安装 mysql8.0 idea2022git 2.2.23 node16以上(新版本不好拉有些库了)jdk最好是17以上jdk8也是行的,反正不管新版如何发布,我们都是你发任你发,永远jjava8第一步新建项目一定要设文件编吗,然后才开如开发2.配置maven  <settingsxmlns=......
  • 组件/框架设计原则
    Windows应用软件开发,会有很多常用的模块,比如数据库、配置文件、日志、后台通信、进程通信、埋点、浏览器等等。下面是目前我们公司windows梳理的部分组件,梳理出来方便大家了解组件概念以及依赖关系:每个应用里,现在或者以后都可能会存在这些模块。以我团队开发的全家桶为例,十多......
  • 记laravel框架中去除请求标头的方法
    laravel框架中使用ajax请求接口会默认设置X-CSRF-TOKEN字段,但是如果服务器端不允许使用该字段,则会报错cors,我们使用setRequestHeaders设置字段为null也不行1.检测是否拥有ajax提前设置,如果有删除if($.ajaxSettings&&$.ajaxSettings.headers){delete$.ajaxSettings.h......
  • 数据治理框架下:高效数据提取技术的应用与优化
    在当今日新月异的数字化时代,数据已逐渐演变成企业的核心资产。有效的数据治理,特别是高效的数据提取技术,对于企业的决策制定、产品创新以及业务运营具有至关重要的意义。本文旨在探讨在数据治理框架下,如何应用和优化高效数据提取技术,以实现数据价值的最大化。一、数据治理框架......
  • uni-ui:基于uni-app的全端兼容高性能UI框架
    一、引言在移动应用开发领域,跨平台框架因其能够降低开发成本、提高开发效率而备受开发者青睐。其中,uni-app作为一个使用Vue.js开发所有前端应用的框架,不仅支持编译到iOS、Android、H5、以及各种小程序等多个平台,还因其丰富的组件库和插件市场,为开发者提供了极大的便利。在uni-......
  • 推荐一个傻瓜级别的ElasticSearch搜索引擎开发框架,低代码很强大(带私活源码)
    背景众所周知,Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。其功能的强大我们无所质疑,但是其API的的使用可谓难倒了众多小白。为了解决大家使用门槛高的问题,今天给大家推荐一个开源的傻瓜级别的ElasticSearch搜索引擎开发框架:Easy-Es(简称EE)介绍官......
  • B端系统的颜值问题:成也框架,败也框架!
    B端UI框架和前端框架的出现,让系统的搭建就像堆积木一样,十分的容易了。这也一下子把程序员的设计和审美水平拔高到了UI框架能够达到的高度。伴随而来的则是系统的堆砌、同质化、糟糕的体验,以及各种违和的组件被生搬硬套的绑定在一块,所谓成也框架,败也框架。大美B端工场从框架说......