一种三维动画引擎的资源打包方法及装置的制造方法

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

【发明内容】

[0005]本申请提供了一种三维动画引擎的资源打包方法,可以避免重复的资源打包,缩短打包所需的时间。
[0006]本申请实施例提供的一种三维动画引擎的资源打包方法,包括:
[0007]A、读取上次打包结束时保存的资源数据和打包信息,生成历史资源数据列表和历史打包信息列表;
[0008]B、对资源目录进行遍历,记录所有的原始游戏资源并收集本次的资源数据和打包信息;
[0009]C、比较本次的资源数据与历史资源数据列表,以及比较本次的打包信息和历史打包信息列表,分析哪些资源需要重新打包,生成重打包资源列表;
[0010]D、遍历重打包资源列表,判断其子资源是否已被打包,若是,则对该资源进行打包,将该资源从重打包资源列表中删除,并加入已打包列表,否则先跳过;如此循环遍历直到重打包资源列表为空;
[0011]E、保存本次的资源数据和打包信息。
[0012]较佳地,步骤A中,若不存在上次打包结束时保存的资源数据和打包信息,则生成两个对应的空表。
[0013]较佳地,所述原始游戏资源包括:渲染器、贴图、材质、模型、动画、网格、预制件、场景或以上内容的任意组合。
[0014]较佳地,所述资源数据包括:资源路径、文件大小与MD5值、对应的元数据文件大小和MD5值、父资源列表、子资源列表、打包的包名称。
[0015]较佳地,所述打包信息包括每个包的名称以及其所包含的资源名称。
[0016]较佳地,该方法进一步包括:增加强制打包的设置选项,对于某些非公共的可以被打入父资源包的子资源,强制令它们单独打成一个包。
[0017]较佳地,打包命名规则包括:
[0018]规则一:如果某一资源被指定强制打包,则其包名称为该资源名称。
[0019]较佳地,打包命名规则进一步包括:
[0020]规则二:非强制打包资源,如果父资源列表为空,则其包名称为资源名称,规则二的优先级低于规则一。
[0021]较佳地,打包命名规则进一步包括:
[0022]规则三:如果父资源只有一个,则其包名称为父资源的包名称,同时将与该资源同名的包内所有的资源所对应的包名称改为父资源包名称;规则三的优先级低于规则二。
[0023]较佳地,打包命名规则进一步包括:
[0024]规则四:如果有多个父资源,则其包名称为资源名称;规则四的优先级低于规则
_- O
[0025]较佳地,令历史资源数据列表中的历史资源数据为TA1,历史打包信息列表中的历史打包数据为TBl,本次收集的资源数据和打包信息为TA2和TB2 ;步骤C包括:
[0026]Cl、若任一资源的本次的资源数据与历史资源数据列表中的对应记录不一致,将该资源的脏标记设置为True,否则将该资源的脏标记设置为false ;
[0027]C2、若任一资源满足如下条件之一,设置该资源的重打包标记为True,否则设置该资源的重打包标记为false:
[0028]该资源在TA2中不存在对应的包名称;
[0029]该资源位于TB2中的一个包,且该包在TBl和TB2中包含的资源列表不一致;
[0030]该资源在TAl中的脏标记和强制打包属性均为True ;
[0031]该资源的任一子资源的脏标记为True,且强制打包标记为False ;
[0032]该资源的任一直接或间接父资源的重打包标记为True ;
[0033]在资源位于TB2的一个包中,该包的资源列表中存在需要重新打包的资源;
[0034]C3、生成包含所有重打包标记为True的资源的重打包资源列表。
[0035]较佳地,步骤Cl包括:
[0036]如果任一资源满足如下条件之一,设置该资源的脏标记为True,若都不满足设置该资源的脏标记为false:
[0037]该资源包含在TA2中,但不包含在TAl ;
[0038]该资源在TAl和TA2中的文件和元数据的大小和MD5值不一致;
[0039]该资源在TAl和TA2中的强制打包标记和包名称不一致;
[0040]该资源在TAl和TA2中的子资源列表不一致。
[0041]可选地,所述三维动画引擎为Unity引擎。
[0042]本申请实施例还提供了一种用于实现三维动画引擎的资源打包的装置,包括:
[0043]历史信息模块,用于读取上次打包结束时保存的资源数据和打包信息,生成历史资源数据列表和历史打包信息列表;
[0044]当前信息模块,用于对资源目录进行遍历,记录所有的原始游戏资源,收集并保存本次的资源数据和打包信息;
[0045]比较模块,用于比较本次的资源数据与历史资源数据列表,以及比较本次的打包信息和历史打包信息列表,分析哪些资源需要重新打包,生成重打包资源列表;
[0046]打包模块,用于遍历重打包资源列表,判断其子资源是否已被打包,若是,则对该资源进行打包,将该资源从重打包资源列表中删除,并加入已打包列表,否则先跳过;如此循环遍历直到重打包资源列表为空。
[0047]较佳地,若不存在上次打包结束时保存的资源数据和打包信息,则历史信息模块生成两个对应的空表。
[0048]较佳地,所述原始游戏资源包括:渲染器、贴图、材质、模型、动画、网格、预制件、场景或以上内容的任意组合。
[0049]较佳地,所述资源数据包括:资源路径、文件大小与MD5值、对应的元数据文件大小和MD5值、父资源列表、子资源列表、打包的包名称。
[0050]较佳地,所述打包信息包括每个包的名称以及其所包含的资源名称。
[0051 ] 较佳地,所述比较模块进一步包括:
[0052]强制打包单元,用于根据强制打包的设置选项,对于某些非公共的可以被打入父资源包的子资源,强制令它们单独打成一个包。
[0053]较佳地,打包模块的打包命名规则包括:
[0054]规则一:如果某一资源被指定强制打包,则其包名称为该资源名称。
[0055]较佳地,打包命名规则进一步包括:
[0056]规则二:非强制打包资源,如果父资源列表为空,则其包名称为资源名称,规则二的优先级低于规则一。
[0057]较佳地,打包命名规则进一步包括:
[0058]规则三:如果父资源只有一个,则其包名称为父资源的包名称,同时将与该资源同名的包内所有的资源所对应的包名称改为父资源包名称;规则三的优先级低于规则二。
[0059]较佳地,打包命名规则进一步包括:
[0060]规则四:如果有多个父资源,则其包名称为资源名称;规则四的优先级低于规则
_- O
[0061]较佳地,令历史资源数据列表中的历史资源数据为TA1,历史打包信息列表中的历史打包数据为TBl,本次收集的资源数据和打包信息为TA2和TB2 ;比较模块包括:
[0062]脏标记设置单元,用于当任一资源的本次的资源数据与历史资源数据列表中的对应记录不一致时,将该资源的脏标记设置为True,否则将该资源的脏标记设置为false ;
[0063]重打包标记设置单元,用于当任一资源满足如下条件之一时,设置该资源的重打包标记为True,否则设置该资源的重打包标记为false:
[0064]该资源在TA2中不存在对应的
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1