前言
在我的框架中一直没有提供加载相关的内容。因为我觉得资源管理器的接口都已经提供了,而资源怎么加载是一件相对比较灵活的事情,所以一直没有提供与加载相关的内容。但是后来居然不止一个人问我如何加载资源?于是我将自己的使用方式简单讲解一下。如果有什么不对的地方,还望大家留言指教。
注意事项
- 加载的资源是由哪个Bundle提供的?
- 加载的资源的类型是什么?
- 不同类型的资源加载后是否有特殊的操作?
- 同步加载还是异步加载?
- 有些资源加载失败了会如何处理?
- 资源加载的顺序是怎样的
问题解析
- 对于第一个问题,我们必须要明确我们加载的资源隶属于哪个Bundle。否则加载肯定会因报错而失败。所以普通资源肯定是要在Bundle加载之后的。对于Bundle如何组织请看我之前的文章《CocosCreator之AssetBundle使用方案分享》。对于资源如何加载请看我之前的文章《游戏开发之资源管理(跨引擎)》
- 资源的类型也是需要指定的。即使有些引擎没有类型这个概念,你为了统一使用也可以自定义一套类型。比如我的资源管理器使用的就是我自己定义的ResType.是与任何引擎都无关的。当然每个资源还有一个url属性。加上资源属于哪个Bundle,刚好有三个属性。
import { ResType } from "./ResInterface";
export default class LoadingItem {
//资源id
protected url: string;
//资源类型
protected type: ResType;
constructor(url: string, type: ResType) {
this.url = url;
this.type = type;
}
getUrl() {
return this.url;
}
getType() {
return this.type;
}
}
export default class LoadResItem extends LoadingItem {
//BundleID
protected moduleID: string;
constructor( url: string, type: ResType,mid: string) {
super(url, type)
this.moduleID = mid;
}