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

简介: 只读区资源管理器设计的主要目的就是以流的方式读取出只读区的资源。调用上层的callback函数,传出字节流数组给调用层。代码在设计上区分开了只读区和可写区的资源管理模块,因为这样符合职责单一的原则。这个比较简单没什么就是两个函数。

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


只读区资源管理器设计的主要目的就是以流的方式读取出只读区的资源。调用上层的callback函数,传出字节流数组给调用层。代码在设计上区分开了只读区和可写区的资源管理模块,因为这样符合职责单一的原则。这个比较简单没什么就是两个函数。


二、代码设计


读取AssetBundle


功能:读取只读区的资源包,这个只是个外壳函数,真正做事的是下面一个


public void ReadAssetBundle(string fileUrl, BaseAction<byte[]> onComplete)
        {
            YouYou.GameEntry.Instance.StartCoroutine(ReadStreamingAsset(fileUrl,onComplete));
        }


读取资源


功能:使用UnityWebRequest载只读区的资源


       private IEnumerator ReadStreamingAsset(string url,BaseAction<byte[]>onComplete)
        {
            //使用只读区目录+相对目录 拼接出来一个绝对目录
            string strFullUrl = Path.Combine(Application.streamingAssetsPath,url);
            //对比url 和 uri:https://blog.csdn.net/sunjintaoxxx/article/details/120261843
            //new 一个 Uri(统一资源标示符)
            Uri uri = new System.Uri(strFullUrl);
            //AbsoluteUri是啥意思啊?自盘中的路径吗?
            using (UnityWebRequest request = UnityWebRequest.Get(uri.AbsoluteUri))
            {
                //收到回应才继续走下一步
                yield return request.SendWebRequest();
                //网络错误 或者会 http访问错误
                if (request.isNetworkError || request.isHttpError)
                {
                    onComplete?.Invoke(null);
                }
                else
                {
                    //http request内部的下载器里的数据,赋值给回调函数
                    onComplete?.Invoke(request.downloadHandler.data);
                }
            }
        }


完整代码


  //只读区资源管理器
    public class StreamingAssetsManager
    {
        private IEnumerator ReadStreamingAsset(string url,BaseAction<byte[]>onComplete)
        {
            string strFullUrl = Path.Combine(Application.streamingAssetsPath,url);
            Uri uri = new System.Uri(strFullUrl);
            using (UnityWebRequest request = UnityWebRequest.Get(uri.AbsoluteUri))
            {
                //收到回应才继续走下一步
                yield return request.SendWebRequest();
                //网络错误 或者会 http访问错误
                if (request.isNetworkError || request.isHttpError)
                {
                    onComplete?.Invoke(null);
                }
                else
                {
                    //http request内部的下载器里的数据,赋值给回调函数
                    onComplete?.Invoke(request.downloadHandler.data);
                }
            }
        }
        public void ReadAssetBundle(string fileUrl, BaseAction<byte[]> onComplete)
        {
            YouYou.GameEntry.Instance.StartCoroutine(ReadStreamingAsset(fileUrl,onComplete));
        }
    }


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

热门文章

最新文章

下一篇
无影云桌面