U3D客户端框架(资源管理篇)之可写区资源管理器

简介: 游戏启动时候,会把可写区的所有assetbundle信息缓存进字典。以便于热更中,加载资时可以取到文件信息避免频繁的文件IO

一、可写区资源管理器的作用


顾名思义,可写区资源管理器就是对读写区文件访问API的封装,对检查可写区域资源的API的封装、资源版本记录作用、可写区资源信息的记录。


Unity中获取可写区的API


Unity中拿到可写区路径的API:Application.persistentDataPath


安卓手机中可写区目录


安卓手机上的可写区域目录一般是:/storage/emulated/0/Android/data/包名/files/ 目录下


二、代码实现


详细的讲解只会挑选出来一些重点的代码来讲一下。其余的函数看全部代码即可。


加载可写区域资源包信息


游戏启动时候,会把可写区的所有assetbundle信息缓存进字典。以便于热更中,加载资时可以取到文件信息避免频繁的文件IO


        //加载可写区资源包信息
        public Dictionary<string, AssetBundleInfoEntity> GetAssetBundleVersionList(ref string version)
        {
            //拿到资源版本号
            version = PlayerPrefs.GetString(ConstDefine.ResourceVersion);
            //把json文件反序列化成文件信息map
            string json = IOUtil.GetFileText(LocalVersionFilePath);
            return JsonMapper.ToObject<Dictionary<string, AssetBundleInfoEntity>>(json);
        }


获取文件字节数组&检查文件存在


        public bool CheckFileExists(string path)
        {
            return File.Exists(string.Format("{0}/{1}",Application.persistentDataPath,path));
        }
        //获取本地文件字节数组
        public byte[] GetFileBuffer(string path)
        {
            return IOUtil.GetFileBuffer(string.Format("{0}/{1}", Application.persistentDataPath, path));
        }


LocalAssetsManager.cs 完整代码


  //可写区资源管理器
    //LocalAssets资源管理器
    public class LocalAssetsManager
    {
        //本地版本文件路径    
        public string LocalVersionFilePath
        {
            get 
            {
                return string.Format("{0}/{1}",Application.persistentDataPath,ConstDefine.VersionFileName);
            }
        }
        //获取可写区版本文件是否存在
        public bool GetVersionFileExists()
        {
            return File.Exists(LocalVersionFilePath);
        }
        public bool CheckFileExists(string path)
        {
            return File.Exists(string.Format("{0}/{1}",Application.persistentDataPath,path));
        }
        //获取本地文件字节数组
        public byte[] GetFileBuffer(string path)
        {
            return IOUtil.GetFileBuffer(string.Format("{0}/{1}", Application.persistentDataPath, path));
        }
        //保存资源版本号(资源版本,只是单纯的资源版本,0.0.1)
        //资源版本号记在了本地配置里,版本文件记在了VersionFile.bytes 版本文件里
        public void SetResourceVersion(string version)
        {
            PlayerPrefs.SetString(ConstDefine.ResourceVersion,version);
        }
        //保存资源版本文件(filelist,里面记录了所有ab包的文件信息。把文件信息都写入到本地去 VersionFile.bytes)
        public void SaveVersionFile(Dictionary<string,AssetBundleInfoEntity>dic)
        {
            //把map结构映射成json格式的string
            string json = JsonMapper.ToJson(dic);
            IOUtil.CreateTextFile(LocalVersionFilePath,json);
        }
        //加载可写区资源包信息
        public Dictionary<string, AssetBundleInfoEntity> GetAssetBundleVersionList(ref string version)
        {
            //拿到资源版本号
            version = PlayerPrefs.GetString(ConstDefine.ResourceVersion);
            //把json文件反序列化成文件信息map
            string json = IOUtil.GetFileText(LocalVersionFilePath);
            return JsonMapper.ToObject<Dictionary<string, AssetBundleInfoEntity>>(json);
        }
    }


相关文章
|
3月前
|
资源调度 分布式计算 监控
【揭秘Hadoop YARN背后的奥秘!】从零开始,带你深入了解YARN资源管理框架的核心架构与实战应用!
【8月更文挑战第24天】Hadoop YARN(Yet Another Resource Negotiator)是Hadoop生态系统中的资源管理器,为Hadoop集群上的应用提供统一的资源管理和调度框架。YARN通过ResourceManager、NodeManager和ApplicationMaster三大核心组件实现高效集群资源利用及多框架支持。本文剖析YARN架构及组件工作原理,并通过示例代码展示如何运行简单的MapReduce任务,帮助读者深入了解YARN机制及其在大数据处理中的应用价值。
87 0
|
4月前
|
缓存 图形学 UED
U3D开发技术深度解析:异步场景加载与资源管理优化策略
【7月更文第11天】在Unity3D(简称U3D)游戏开发中,优化场景加载与资源管理是提升用户体验的关键一环。通过实现高效的异步场景加载和智能的资源管理策略,我们能显著缩短玩家的等待时间,提升游戏流畅度。本文将详细介绍这两种技术的应用,并提供实用的代码示例。
331 0
|
Java 关系型数据库 MySQL
JSP 人力资源管理系统myeclipse开发mysql数据库bs框架java编程jdbc
JSP 人力资源管理系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0,使用java语,言开发系统主要采用B/S模式开发。
89 0
|
前端开发 JavaScript 关系型数据库
Node框架 【Koa】之 【静态资源管理、模板引擎、连接数据库】
Node框架 【Koa】之 【静态资源管理、模板引擎、连接数据库】
193 0
|
存储 缓存 JSON
U3D客户端框架(资源管理篇)之自动化打Assetbundle包管理器
AssetBundle是将资源使用Unity提供的一种用于存储资源的压缩格式打包后的集合,它可以存储任何一种Unity可以识别的资源,如模型,纹理图,音频,场景等资源。也可以加载开发者自定义的二进制文件。他们的文件类型是.assetbundle/.unity3d,他们先前被设计好,很容易就下载到我们的游戏或者场景当中。
U3D客户端框架(资源管理篇)之自动化打Assetbundle包管理器
U3D客户端框架(资源管理篇)之只读区资源管理器
只读区资源管理器设计的主要目的就是以流的方式读取出只读区的资源。调用上层的callback函数,传出字节流数组给调用层。代码在设计上区分开了只读区和可写区的资源管理模块,因为这样符合职责单一的原则。这个比较简单没什么就是两个函数。
|
3月前
|
机器学习/深度学习 数据采集 算法框架/工具
使用Python实现深度学习模型:智能人力资源管理与招聘
【8月更文挑战第12天】 使用Python实现深度学习模型:智能人力资源管理与招聘
107 2
|
4月前
|
数据采集 监控 数据安全/隐私保护
ERP系统中的人力资源管理与员工绩效评估解析
【7月更文挑战第25天】 ERP系统中的人力资源管理与员工绩效评估解析
314 1
|
4月前
|
机器学习/深度学习 Oracle 安全
人力资源管理革新:6款系统一站式解决HR事务
**Zoho People、BambooHR、Workday、ADP Workforce Now和Oracle HCM Cloud是知名的人力资源管理系统。Zoho People提供模块化设计、移动应用和自动化工作流;BambooHR以用户友好界面和员工档案管理见长;Workday侧重全球化云解决方案和智能决策工具;ADP Workforce Now集成HR与薪资管理,强调合规性;Oracle HCM Cloud则以高度定制和分析工具闻名。这些系统各有特点,适用于不同规模和需求的企业。**
84 11
|
4月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的人力资源管理系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的人力资源管理系统附带文章源码部署视频讲解等
50 2

热门文章

最新文章

下一篇
无影云桌面