您的位置:首页 > 其它

游戏项目中的资源加载管理

2015-11-14 17:21 357 查看
简介

资源加载时的恢复与暂停以及缓存

资源加载的相关处理
资源路径

优先级处理

发布事件

资源加载未完成与完成时的处理

总结

简介

资源加载主要需要注意以下几点:

资源加载时的缓存,停止,恢复

资源加载时的处理

资源加载未完成与未完成时的处理

资源加载时的恢复与暂停以及缓存

项目中使用的工具BulkLoader,该工具提供了一系列基础的资源加载操作,资源的加载,暂停,缓存,是否加载成功或失败等。这并不是这篇文章所讲述的重点,本文主要是讲述基于这些基础操作之上的一些封装。

资源加载的相关处理

资源路径

项目中所使用的资源种类繁多,如果每加载一个资源都需要去寻找,无疑是是否浪费时间的,所以,我们应当在文件或者其他位置中记录每个资源的文件,然后根据需要加载的文件名在常数时间内确定路径。

也就是在程序中使用hash结构存储文件名-路径。本文中这些数据都存储在 runTimeList 中。

优先级处理

游戏中需要加载的资源很多,那么就要对加载资源的优先级进行处理。

本文中主要将资源加载方式分为以下几种:

队列加载

动态加载(带优先级参数)

静默加载

其中,队列加载时同时加载的一系列文件,该操作也是优先级最高的,适用于游戏运行必须得资源。动态加载则是用来加载游戏中非必须得可替代的或需要用到时再加载的资源。静默加载则是在队列加载和动态加载无任务时,才进行加载的资源,主要是用来加载一些不重要或较大的资源来改善游戏体验。

接下来再讲一讲三种加载方式之间优先级的实现方式,其中,动态加载的优先级参数是BulkLoader内部实现的,这里就先不讲了。

实现的思路很简单,就是保证这三种操作的加载顺序,比如在有队列加载的时候暂停动态加载和静默加载。 但有几点需要注意:

这三种操作所加载的资源可能存在重复的情况,防止错误的暂停

加载的请求可能随时出现,如何保证优先级

何时恢复被暂停的加载

发布事件

资源的加载不可能在顷刻之间完成,所以为了进行相应地处理,本文中发布的事件主要是两种类型,LOAD_PROGRESS, LOAD_COMPLETE.

其中, progress事件是用来反映加载的进度,complete事件则是表示加载完成。当然,发布事件时需要带上相应地参数, 比如该事件对应的文件名,以进行相应地处理。

资源加载未完成与完成时的处理

页游项目中需要动态加载的资源很多,有些必须得资源我们需要等待其加载资源完成再进行接下来的游戏,比如打开游戏界面时,需要等待窗口资源的加载,加载完成之前可以用进度条显示加载进度(根据之前的 LOAD_PROGRESS 事件)。

但是,有些资源的加载并不会影响游戏的继续,此时,我们不该机械地等待资源加载完成再进行游戏。比如,地图上用来展示的npc,窗口中用来展示的图片等。对于这些非必须得资源,我们可以用一些默认资源来进行代替,待加载完成之后再对其进行优化(根基之前的 LOAD_COMPLETE事件)。

总结

这只是一篇关于页游资源加载方面的基础性文章,等以后有更深的感悟之后再来进行修改,也希望大家多多留言指教。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  游戏 资源 加载