一种三维动画引擎的资源加载方法、装置及系统的制作方法

文档序号:9597687阅读:561来源:国知局
一种三维动画引擎的资源加载方法、装置及系统的制作方法
【技术领域】
[0001]本申请涉及计算机视频游戏开发技术,一种三维动画引擎的资源加载方法、装置及系统。
【背景技术】
[0002]Unity是由Unity Technologies开发的一个用于创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。
[0003]鉴于操作平台和Unity自身的限制,Unity资源一般都通过打包为资源包(AssetBundle)的方式进行动态更新与加载。Unity资源指的是用于生成场景及场景中各种物体的元素,例如模型贴图素材、场景源文件、插件等。Assetbundle是Unity Pro提供提供的功能,它可以把多个游戏对象或者资源二进制文件封装到Assetbundle中,提供了封装与解包的方法。
[0004]对于资源庞大的游戏来说,资源之间的各种依赖关系处理以及加载的时间消耗是个较大的难题,严重影响开发效率。

【发明内容】

[0005]本申请提供了一种三维动画引擎的资源加载方法、装置及系统,能够很好管理资源的依赖关系,提升开发效率。
[0006]本申请实施例提供了一种三维动画引擎的资源加载方法,在资源打包过程中,将需要打包的资源的依赖信息作为包的主资源,所述资源作为辅资源进行打包,该加载方法包括:先通过预加载目标资源的依赖信息来获取依赖关系,然后再根据依赖关系加载目标资源的依赖资源和目标资源。
[0007]较佳地,所述先通过预加载目标资源的依赖信息来获取依赖关系,然后再根据依赖关系加载目标资源的依赖资源和目标资源包括:
[0008]A、对于资源加载请求,判断依赖信息表中是否包含对应资源的依赖关系,若是,则进行步骤B;否则,在加载任务表中增加一个依赖信息加载的任务T1,并将该资源加载请求添加到任务T1中,然后执行步骤C ;
[0009]B、根据依赖信息表判断该资源对象的依赖对象是否已经加载,若是,则进行步骤C ;否则在加载任务表中增加所有依赖对象的加载任务T2,并将该资源加载请求添加到加载任务T2的请求列表中,然后执行步骤C ;
[0010]C、在待加载队列中添加该资源的加载任务T3 ;
[0011]D、根据加载任务表进行资源加载;
[0012]E、判断待加载队列是否为空,若是,结束本流程;否则,从待加载队列中取出一定数量的任务,添加到加载任务表中,返回步骤D。
[0013]较佳地,步骤A之前进一步包括:
[0014]判断待加载队列中是否已经存在对应资源的加载任务,是则将该请求添加到待加载队列中的所述加载任务的请求列表中,然后执行步骤D ;否则直接执行步骤A。
[0015]较佳地,步骤A之前进一步包括:
[0016]对于资源加载请求,判断加载任务表中面是否已经存在对应资源的加载任务,若是,则将该资源加载请求添加到加载任务表中的所述加载任务的请求列表中,然后执行步骤D;否则进行步骤A。
[0017]较佳地,步骤A之前进一步包括:
[0018]对于资源加载请求,判断资源对象表中是否已经存在对应的加载完毕、可以直接进行使用的资源对象,是则增加资源对象表中该对象的引用计数,并直接返回该资源对象的处理,结束该资源加载请求;否则进行步骤A。
[0019]较佳地,步骤D包括:
[0020]D1、判断加载任务的类型,如果为T1,执行步骤D2,如果为T2,执行步骤D3 ;如果为T3,执行步骤D4 ;
[0021]D2、对于依赖信息加载任务T1,从目标资源包中加载依赖信息并将所述依赖信息加入依赖信息表,然后依次处理该任务所包含的所有资源加载请求,然后执行步骤D5 ;
[0022]D3、对于所有依赖对象的加载任务T2,从依赖资源包中加载该加载任务对应的资源对象,将所述资源对象加入资源对象表并添加引用计数。加载结束后,依次处理该任务所包含的所有资源请求:当请求资源的依赖资源全部加载完毕后,执行步骤D5 ;
[0023]D4、对于资源的加载任务T3,从包中加载该加载任务对应的资源对象,将所述资源对象加入资源对象表并添加引用计数。加载结束后,依次处理该任务所包含的所有资源请求,然后对客户端返回该资源对象的处理结果;
[0024]D5、判断加载任务表中是否还有未处理的任务,若是,返回步骤D1,否则执行步骤
Eo
[0025]较佳地,在服务器侧和客户端侧,分别通过一个包信息列表对本地的资源进行维护;步骤A之前进一步包括:
[0026]在客户端启动时,比较本地和服务器的包信息列表,判断两者的校验信息是否一致,若一致,不作进一步处理;若不一致,表明有包添加、删除或者修改,则删除不需要的包或者向服务器发送请求下载发生变更的包。
[0027]较佳地,该方法进一步包括:每隔一段时间,对资源对象表进行遍历,检查其引用计数是否归0,并判断其是否为常驻内存的类型,对于引用计数为0的非常驻资源,对其进行卸载处理。
[0028]可选地,所述三维动画引擎为Unity引擎。
[0029]本申请实施例还提供了一种三维动画引擎的资源加载装置,该装置包括:
[0030]打包模块,用于在资源打包过程中,将需要打包的资源的依赖信息作为包的主资源,所述资源作为辅资源进行打包;
[0031]预加载模块,用于通过预加载目标资源的依赖信息来获取依赖关系;
[0032]资源加载模块,用于根据依赖关系加载目标资源的依赖资源和目标资源。
[0033]较佳地,所述预加载模块包括:第一判断单元、第二判断单元、依赖信息加载任务单元和资源加载任务单元;
[0034]第一判断单元,用于判断依赖信息表中是否包含与资源加载请求对应的资源的依赖关系,若是,使能第二判断单元;否则,通知依赖信息加载任务单元在加载任务表中增加一个依赖信息加载的任务T1,并将该资源加载请求添加到任务T1中;
[0035]第二判断单元,用于根据依赖信息表判断该资源对象的依赖对象是否已经加载,若是,则通知资源加载任务单元在待加载队列中添加该资源的加载任务T3;否则,通知依赖信息加载任务单元在加载任务表中增加所有依赖对象的加载任务T2,并将该资源加载请求添加到加载任务T2的请求列表中;然后通知资源加载任务单元在待加载队列中添加该资源的加载任务T3;;
[0036]依赖关系加载任务单元,用于根据来自第一判断单元的通知,在加载任务表中增加依赖信息加载的任务T1,并将该资源加载请求添加到任务T1中;或者根据来自第二判断单元的通知,在加载任务表中增加所有依赖对象的加载任务T2,并将该资源加载请求添加到加载任务T2的请求列表中;
[0037]资源加载任务单元,用于根据来自第二判断单元的通知,在待加载队列中添加该资源的加载任务T3;
[0038]资源加载模块包括:加载单元和待加载任务处理单元;
[0039]加载单元,用于根据加载任务表进行资源加载;
[0040]待加载任务处理单元,用于在加载任务表中的任务处理完毕后,从待加载队列中取出一定数量的任务,添加到加载任务表中。
[0041 ] 较佳地,该装置进一步包括:
[0042]待加载判断模块,用于判断待加载队列中是否已经存在与资源加载请求对应的资源的加载任务,是则将该请求添加到待加载队列中的所述加载任务的请求列表中。
[0043]较佳地,该装置进一步包括:
[0044]加载判断模块,用于判断加载任务表中面是否已经存在与资源加载请求对应的资源的加载任务,若是,则将该资源加载请求添加到加载任务表中的所述加载任务的请求列表中。
[0045]较佳地,该装置进一步包括:
[0046]已加载判断模块,用于判断资源对象表中是否已经存在与资源加载请求对应的加载完毕、可以直接进行使用的资源对象,是则增加资源对象表中该对象的引用计数,并直接返回该资源对象的处理。
[0047]较佳地,加载单元包括:
[0048]任务类型判断子单元,用于判断加载任务的类型,如果为T1,使能第一加载子单元,如果为T2,使能第二加载子单元;如果为T3,使能第三加载子单元;
[0049]第一加载子单元,对于依赖信息加载任务T1,从目标资源包中加载依赖信息并将所述依赖信息加入依赖信息表,然后依次处理
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1