游戏项目中的资源加载管理
2015-11-14 17:21
357 查看
简介
资源加载时的恢复与暂停以及缓存
资源加载的相关处理
资源路径
优先级处理
发布事件
资源加载未完成与完成时的处理
总结
资源加载时的缓存,停止,恢复
资源加载时的处理
资源加载未完成与未完成时的处理
也就是在程序中使用hash结构存储文件名-路径。本文中这些数据都存储在 runTimeList 中。
本文中主要将资源加载方式分为以下几种:
队列加载
动态加载(带优先级参数)
静默加载
其中,队列加载时同时加载的一系列文件,该操作也是优先级最高的,适用于游戏运行必须得资源。动态加载则是用来加载游戏中非必须得可替代的或需要用到时再加载的资源。静默加载则是在队列加载和动态加载无任务时,才进行加载的资源,主要是用来加载一些不重要或较大的资源来改善游戏体验。
接下来再讲一讲三种加载方式之间优先级的实现方式,其中,动态加载的优先级参数是BulkLoader内部实现的,这里就先不讲了。
实现的思路很简单,就是保证这三种操作的加载顺序,比如在有队列加载的时候暂停动态加载和静默加载。 但有几点需要注意:
这三种操作所加载的资源可能存在重复的情况,防止错误的暂停
加载的请求可能随时出现,如何保证优先级
何时恢复被暂停的加载
其中, progress事件是用来反映加载的进度,complete事件则是表示加载完成。当然,发布事件时需要带上相应地参数, 比如该事件对应的文件名,以进行相应地处理。
但是,有些资源的加载并不会影响游戏的继续,此时,我们不该机械地等待资源加载完成再进行游戏。比如,地图上用来展示的npc,窗口中用来展示的图片等。对于这些非必须得资源,我们可以用一些默认资源来进行代替,待加载完成之后再对其进行优化(根基之前的 LOAD_COMPLETE事件)。
资源加载时的恢复与暂停以及缓存
资源加载的相关处理
资源路径
优先级处理
发布事件
资源加载未完成与完成时的处理
总结
简介
资源加载主要需要注意以下几点:资源加载时的缓存,停止,恢复
资源加载时的处理
资源加载未完成与未完成时的处理
资源加载时的恢复与暂停以及缓存
项目中使用的工具BulkLoader,该工具提供了一系列基础的资源加载操作,资源的加载,暂停,缓存,是否加载成功或失败等。这并不是这篇文章所讲述的重点,本文主要是讲述基于这些基础操作之上的一些封装。资源加载的相关处理
资源路径
项目中所使用的资源种类繁多,如果每加载一个资源都需要去寻找,无疑是是否浪费时间的,所以,我们应当在文件或者其他位置中记录每个资源的文件,然后根据需要加载的文件名在常数时间内确定路径。也就是在程序中使用hash结构存储文件名-路径。本文中这些数据都存储在 runTimeList 中。
优先级处理
游戏中需要加载的资源很多,那么就要对加载资源的优先级进行处理。本文中主要将资源加载方式分为以下几种:
队列加载
动态加载(带优先级参数)
静默加载
其中,队列加载时同时加载的一系列文件,该操作也是优先级最高的,适用于游戏运行必须得资源。动态加载则是用来加载游戏中非必须得可替代的或需要用到时再加载的资源。静默加载则是在队列加载和动态加载无任务时,才进行加载的资源,主要是用来加载一些不重要或较大的资源来改善游戏体验。
接下来再讲一讲三种加载方式之间优先级的实现方式,其中,动态加载的优先级参数是BulkLoader内部实现的,这里就先不讲了。
实现的思路很简单,就是保证这三种操作的加载顺序,比如在有队列加载的时候暂停动态加载和静默加载。 但有几点需要注意:
这三种操作所加载的资源可能存在重复的情况,防止错误的暂停
加载的请求可能随时出现,如何保证优先级
何时恢复被暂停的加载
发布事件
资源的加载不可能在顷刻之间完成,所以为了进行相应地处理,本文中发布的事件主要是两种类型,LOAD_PROGRESS, LOAD_COMPLETE.其中, progress事件是用来反映加载的进度,complete事件则是表示加载完成。当然,发布事件时需要带上相应地参数, 比如该事件对应的文件名,以进行相应地处理。
资源加载未完成与完成时的处理
页游项目中需要动态加载的资源很多,有些必须得资源我们需要等待其加载资源完成再进行接下来的游戏,比如打开游戏界面时,需要等待窗口资源的加载,加载完成之前可以用进度条显示加载进度(根据之前的 LOAD_PROGRESS 事件)。但是,有些资源的加载并不会影响游戏的继续,此时,我们不该机械地等待资源加载完成再进行游戏。比如,地图上用来展示的npc,窗口中用来展示的图片等。对于这些非必须得资源,我们可以用一些默认资源来进行代替,待加载完成之后再对其进行优化(根基之前的 LOAD_COMPLETE事件)。
总结
这只是一篇关于页游资源加载方面的基础性文章,等以后有更深的感悟之后再来进行修改,也希望大家多多留言指教。相关文章推荐
- 我是运营,我没有假期
- 每个 Linux 游戏玩家都绝不想要的恼人体验
- 在 Fedora 上使用 Steam play 和 Proton 来玩 Windows 游戏
- Steam 让我们在 Linux 上玩 Windows 的游戏更加容易
- 如何使用 Steam Play 在 Linux 上玩仅限 Windows 的游戏
- 新一代iPad适配应用之游戏篇
- VB实现的《QQ美女找茬游戏》作弊器实例
- 自学成才的秘密:115个 web Develop 资源
- jQuery下实现等待指定元素加载完毕(可改成纯js版)
- C#实现洗牌游戏实例
- C#实现的算24点游戏算法实例分析
- jQuery模拟原生态App上拉刷新下拉加载更多页面及原理
- C#实现简单的井字游戏实例
- C++编写简单的打靶游戏
- C++实现基于控制台界面的吃豆子游戏
- jQuery+PHP+ajax实现微博加载更多内容列表功能
- C#中使用资源的方法分析
- Shell脚本实现Linux系统和进程资源监控
- JavaScript判断图片是否能够加载,失败则替换默认图片
- 纯javascript实现的小游戏《Flappy Pig》实例