手游热更新方法_2

文档序号:9727163阅读:来源:国知局
,使得所述Unity成员变量按照指定方式序列化,以实现资源与所述运行代码的匹配。
[0029]原生的Unity会将Monobehav1r的子类的所有成员变量进行序列化,数据部分保存在.prefab文件中,序列化顺序则记录在APK包中。由于APK包在安装完毕之后,就无法修改,则如果仅仅实现了所述运行代码的热更新,将出现资源与所述运行代码不匹配的问题。因此必须使用与所述运行代码匹配的序列化方式替代原有的序列化方式。
[0030]具体的,首先,需要取消记录在APK中的Unity成员变量的序列化顺序。即在利用Unity编辑器编译时,打开所述Unity编辑器的NONE_SEARIALIZE编译开关,以关闭Unity自定义的数据序列化功能,从而使得所述Unity自定义的数据序列化顺序无效,即实现取消记录在APK中的Unity成员变量的序列化顺序。
[0031 ]其次,在利用Unity编辑器编译时,将SerialBehav1r的对象数据导出为自定义的Unity成员变量的序列化数据,且所述自定义的Unity成员变量的序列化数据以.bytes文件形式存储。
[0032]而当手机游戏运行时,在载入SerialBehav1r之后,载入所述.bytes文件以还原所述SerialBehav1r的实际对象属性,使得所述资源与所述运行代码向匹配。
[0033]在实现所述运行代码和资源的热更新之后,即可实现游戏的分区更新以及版本回退,提尚玩豕的体验。
[0034]通过手游热更新方法而实现Unity 3D游戏热更新的流程如下:
[0035]步骤SOOl:启动游戏。
[0036]步骤S002:判断本地的临时目录下是否有DLL文件,如果有,直接将所述DLL文件复制到Un i ty的可载入目录,然后启动所述Un i ty;如果没有,则直接启动所述Un i ty。
[0037]步骤S003:通过所述Unity访问区服务器的web接口,并通过选择界面选择区服务器。
[0038]步骤S004:下载所选择的区服务器上的版本号。
[0039]步骤S005:判断所选择的区服务器上的版本号与本地所存储的版本号是否一致,如果一致,则开始游戏;如果不一致,分析所选择的区服务器上的版本号与本地所存储的版本号之间的差异,下载差异文件包。
[0040]在这个过程中,通过本发明所提供的手游热更新方法以实现游戏运行代码和资源的热更新。
[0041]步骤S006:将下载的差异文件包解压并存储在本地的临时目录上,然后重启客户端APK,重新启动游戏即可。
[0042]需要说明的是,本发明不仅适用于Android系统,还适用于Iinux、1S系统及其他系统,只是在linux、10S系统以及其他系统中,由于平台机制不同,所调用的文件以及函数名称不同,但是原理一致,在此不再赘述。
[0043]综上,在本发明实施例提供的手游热更新方法中,通过修改运行代码的加载路径,使得所述运行代码按照指定目录加载,以实现所述运行代码的热更新。然后再修改Unity成员变量的序列化方式,使得所述Unity成员变量按照指定方式序列化,以实现资源与所述运行代码的匹配,从而实现所述运行代码和资源的热更新,使得游戏分区更新和版本回退得以实现。提高了游戏开发的效率,也提高了游戏玩家的体验。
[0044]上述仅为本发明的优选实施例而已,并不对本发明起到任何限制作用。任何所属技术领域的技术人员,在不脱离本发明的技术方案的范围内,对本发明揭露的技术方案和技术内容做任何形式的等同替换或修改等变动,均属未脱离本发明的技术方案的内容,仍属于本发明的保护范围之内。
【主权项】
1.一种手游热更新方法,其特征在于,包括: 修改运行代码的加载路径,使得所述运行代码按照指定目录加载,以实现所述运行代码的热更新; 修改Unity成员变量的序列化方式,使得所述Unity成员变量按照指定方式序列化,以实现资源与所述运行代码的匹配。2.如权利要求1所述的手游热更新方法,其特征在于,通过Hook方式修改所述运行代码的加载路径。3.如权利要求1所述的手游热更新方法,其特征在于,所述运行代码以DLL文件形式存储在APK中,通过修so文件以实现DLL文件的加载路径。4.如权利要求3所述的手游热更新方法,其特征在于,通过修改I ibmon0.so文件以实现修改DLL文件的加载路径。5.如权利要求4所述的手游热更新方法,其特征在于,通过修改Iibmon0.so文件中的mono_image_open_from_data_with_name函数以实现修改DLL文件的加载路径,使得所述DLL文件按照指定目录加载。6.如权利要求1所述的手游热更新方法,其特征在于,修改Unity成员变量的序列化方式的步骤包括: 取消记录在APK中的Unity成员变量的序列化顺序; 自定义Unity成员变量的序列化顺序。7.如权利要求6所述的手游热更新方法,其特征在于,取消记录在APK中的Unity成员变量的序列化顺序的步骤包括:在利用Unity编辑器编译时,打开NONE_SEARIALIZE编译开关,以关闭Unity自定义的数据序列化功能。8.如权利要求6所述的手游热更新方法,其特征在于,自定义Unity成员变量的序列化顺序的步骤包括:在利用Unity编辑器编译时,将SerialBehav1r的对象数据导出为自定义的Un i ty成员变量的序列化数据。9.如权利要求8所述的手游热更新方法,其特征在于,所述自定义的Unity成员变量的序列化数据以.bytes文件形式存储。
【专利摘要】本发明提供了一种手游热更新方法,包括:修改运行代码的加载路径,使得所述运行代码按照指定目录加载,以实现所述运行代码的热更新;修改Unity成员变量的序列化方式,使得所述Unity成员变量按照指定方式序列化,以实现资源与所述运行代码的匹配。通过修改运行代码的加载路径,使得所述运行代码按照指定目录加载,以实现所述运行代码的热更新。然后再修改Unity成员变量的序列化方式,使得所述Unity成员变量按照指定方式序列化,以实现资源与所述运行代码的匹配,从而实现所述运行代码和资源的热更新,使得游戏分区更新和版本回退得以实现。提高了游戏开发的效率,也提高了游戏玩家的体验。
【IPC分类】G06F9/445
【公开号】CN105487885
【申请号】CN201510819844
【发明人】谈欣诚, 金鑫, 王耀松, 黄皓
【申请人】盛趣信息技术(上海)有限公司
【公开日】2016年4月13日
【申请日】2015年11月23日
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1