CN111249744B - 资源加载方法和装置、存储介质及电子装置 - Google Patents
资源加载方法和装置、存储介质及电子装置 Download PDFInfo
- Publication number
- CN111249744B CN111249744B CN202010060355.5A CN202010060355A CN111249744B CN 111249744 B CN111249744 B CN 111249744B CN 202010060355 A CN202010060355 A CN 202010060355A CN 111249744 B CN111249744 B CN 111249744B
- Authority
- CN
- China
- Prior art keywords
- resource
- target
- resources
- package
- loading
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/70—Game security or game management aspects
- A63F13/77—Game security or game management aspects involving data related to game devices or game servers, e.g. configuration data, software version or amount of memory
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F2300/00—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
- A63F2300/50—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers
- A63F2300/55—Details of game data or player data management
- A63F2300/552—Details of game data or player data management for downloading to client devices, e.g. using OS version, hardware or software profile of the client device
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Business, Economics & Management (AREA)
- Computer Security & Cryptography (AREA)
- General Business, Economics & Management (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种资源加载方法和装置、存储介质及电子装置。其中,该方法包括:获取资源加载请求,其中,资源加载请求用于请求加载在目标客户端中执行目标操作时所需的资源;响应资源加载请求,从与目标客户端对应的目标资源包中确定出与目标操作匹配的目标资源集,其中,目标资源包中包括至少两个资源集,每个资源集的大小小于等于第一阈值;将目标资源集加载至目标缓存,以在目标客户端中执行目标操作时提供资源。本发明解决了游戏资源的加载速度低的技术问题。
Description
技术领域
本发明涉及计算机领域,具体而言,涉及一种资源加载方法和装置、存储介质及电子装置。
背景技术
现有的移动游戏通常包含非常庞大的游戏资源,Unity3D是由UnityTechnologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具。AssetBundle是Unity 3D提供的一种用来存储资源的文件格式,它可以存储任意一种Unity引擎能够识别的资源。
在现有技术方案中,将游戏资源打包成AssetBundle,在资源加载的过程中,由于打包中的AssetBundle常常存在冗余资源,由此降低了资源的加载速度。此外,由于AssetBundle缺乏卸载机制,造成运行时内存的浪费。
因此,针对相关技术中,游戏资源的加载速度低的问题,目前尚未存在有效的解决方案。
发明内容
本发明实施例提供了一种资源加载方法和装置、存储介质及电子装置,以至少解决游戏资源的加载速度低的技术问题。
根据本发明实施例的一个方面,提供了一种资源加载方法,包括:获取资源加载请求,其中,所述资源加载请求用于请求加载在目标客户端中执行目标操作时所需的资源;响应所述资源加载请求,从与所述目标客户端对应的目标资源包中确定出与所述目标操作匹配的目标资源集,其中,所述目标资源包中包括至少两个资源集,每个所述资源集的大小小于等于第一阈值;将所述目标资源集加载至目标缓存,以在所述目标客户端中执行所述目标操作时提供资源。
可选地,从与所述目标客户端对应的目标资源包中确定出与所述目标操作匹配的目标资源集,包括:解析所述资源加载请求,确定所述目标资源包中第一资源包的包标识;根据所述第一资源包的包标识加载所述目标资源包;从所述目标资源包中确定出所述目标资源集。
可选地,所述根据所述第一资源包的包标识加载所述目标资源包,包括:获取所述资源包的依赖关系;在所述依赖关系指示所述第一资源包并未被其他资源包依赖的情况下,将所述第一资源包确定为所述目标资源包;加载所述第一资源包;在所述依赖关系指示所述第一资源包被第二资源包依赖的情况下,将所述第一资源包及所述第二资源包确定为所述目标资源包;加载所述第一资源包和所述第二资源包。
可选地,在所述根据所述第一资源包的包标识加载所述目标资源包之后,还包括:在所述依赖关系指示所述第一资源包并未被其他资源包依赖,且所述第一资源包并非目标资源类型的情况下,释放所述第一资源包;否则,将所述目标资源包记录到缓存列表。
可选地,在所述将所述目标资源集加载至目标缓存之后,还包括:在使用所述目标资源集执行所述目标操作之后,查看所述缓存列表;在所述缓存列表中查找到所述目标资源包的情况下,调用第一插件卸载所述目标资源包中的资源;在所述缓存列表中未查找到所述目标资源包的情况下,调用第二插件卸载所述目标资源包中的资源。
可选地,在所述从与所述目标客户端对应的目标资源包中确定出与所述目标操作匹配的目标资源集之前,还包括:从资源映射关系表中获取与所述目标资源包匹配的加载路径,其中,所述资源映射关系表用于记录资源包与加载路径之间的对应关系;通过所述加载路径加载所述目标资源包。
可选地,所述方法还包括:根据资源属性对运行所述目标客户端所使用的全部资源进行第一次分组,得到至少两个目标资源分组;按照预设资源大小将每个所述目标资源分组划分为至少两个预备资源集;分别对每个所述目标资源分组中的预备资源集进行打包,得到预备资源包,其中,所述预备资源包中包括所述目标资源包,所述预备资源集中包括所述目标资源集;为每个所述预备资源包分配加载路径,并将每个所述预备资源包和对应的加载路径存储至资源映射关系表中。
根据本发明实施例的另一方面,还提供了一种资源加载装置,包括:获取模块,用于获取资源加载请求,其中,所述资源加载请求用于请求加载在目标客户端中执行目标操作时所需的资源;响应模块,用于响应所述资源加载请求,从与所述目标客户端对应的目标资源包中确定出与所述目标操作匹配的目标资源集,其中,所述目标资源包中包括至少两个资源集,每个所述资源集的大小小于等于第一阈值;加载模块,用于将所述目标资源集加载至目标缓存,以在所述目标客户端中执行所述目标操作时提供资源。
根据本发明实施例的又一方面,还提供了一种计算机可读的存储介质,该计算机可读的存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述资源加载方法。
根据本发明实施例的又一方面,还提供了一种电子装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,上述处理器通过计算机程序执行上述的资源加载方法。
在本发明实施例中,采用获取资源加载请求,其中,资源加载请求用于请求加载在目标客户端中执行目标操作时所需的资源;响应资源加载请求,从与目标客户端对应的目标资源包中确定出与目标操作匹配的目标资源集,其中,目标资源包中包括至少两个资源集,每个资源集的大小小于等于第一阈值;将目标资源集加载至目标缓存,以在目标客户端中执行所述目标操作时提供资源。通过对资源的合理拆分打包,达到了在运行时可以减少加载时间的目的,从而实现了提高资源加载速度的技术效果,进而解决了游戏资源的加载速度低的技术问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的一种可选的资源加载方法的应用环境的示意图;
图2是根据本发明实施例的资源加载方法的流程图;
图3是根据本发明可选的实施方式的一种可选的资源加载方法的示意图一;
图4是根据本发明可选的实施方式的一种可选的资源加载方法的示意图二;
图5是根据本发明可选的实施方式的一种可选的资源加载方法的示意图三;
图6是根据本发明可选的实施方式的一种可选的资源加载方法的示意图四;
图7是根据本发明可选的实施方式的一种可选的资源加载方法的示意图五;
图8是根据本发明可选的实施方式的一种可选的资源加载方法的整体流程图;
图9是根据本发明实施例的一种可选的资源加载装置的结构示意图;
图10是根据本发明实施例的一种可选的电子装置的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
根据本发明实施例的一个方面,提供了一种资源加载方法,可选地,作为一种可选的实施方式,上述资源加载方法可以但不限于应用于如图1所示的环境中。
可选地,在本实施例中,上述资源加载方法可以但不限于应用于服务器112中,用于根据资源加载请求,在从与目标客户端对应的目标资源包中确定出与目标操作匹配的目标资源集。其中,上述应用客户端可以但不限于运行在用户设备102中,该用户设备102可以但不限于为手机、平板电脑、笔记本电脑、PC机等支持运行应用客户端的终端设备。上述服务器112和用户设备102可以但不限于通过网络实现数据交互,上述网络可以包括但不限于无线网络或有线网络。其中,该无线网络包括:蓝牙、WIFI及其他实现无线通信的网络。上述有线网络可以包括但不限于:广域网、城域网、局域网。上述仅是一种示例,本实施例中对此不作任何限定。
可选地,作为一种可选的实施方式,如图2所示,上述资源加载方法包括:
步骤S202,获取资源加载请求,其中,所述资源加载请求用于请求加载在目标客户端中执行目标操作时所需的资源;
步骤S204,响应所述资源加载请求,从与所述目标客户端对应的目标资源包中确定出与所述目标操作匹配的目标资源集,其中,所述目标资源包中包括至少两个资源集,每个所述资源集的大小小于等于第一阈值;
步骤S206,将所述目标资源集加载至目标缓存,以在所述目标客户端中执行所述目标操作时提供资源。
作为一个可选的实施方式,目标客户端可以是游戏客户端,执行的目标操作可以是玩家操作游戏场景中的虚拟操作对象执行的动作,例如:使用虚拟射击道具执行射击动作,在本实施例中目标操作可以是在游戏场景中可以出现的任意的操作。目标资源包可以是AssetBundle资源包,目标资源集是对AssetBundle资源包进行更精细的划分后的资源集,资源集中的资源大小不能超过第一阈值,第一阈值的大小可以根据实际情况而定,例如可以是1M、4M、10M等。目标缓存可以是终端的内存,用于对加载的资源进行缓存,以便在需要资源的时候直接在缓存中获取,提高加载速度。
通过本申请,采用获取资源加载请求,其中,资源加载请求用于请求加载在目标客户端中执行目标操作时所需的资源;响应资源加载请求,从与目标客户端对应的目标资源包中确定出与目标操作匹配的目标资源集,其中,目标资源包中包括至少两个资源集,每个资源集的大小小于等于第一阈值;将目标资源集加载至目标缓存,以在目标客户端中执行所述目标操作时提供资源。通过对资源的合理拆分打包,达到了在运行时可以减少加载时间的目的,从而实现了提高资源加载速度的技术效果,进而解决了游戏资源的加载速度低的技术问题。
作为一个可选的实施例,从与所述目标客户端对应的目标资源包中确定出与所述目标操作匹配的目标资源集,包括:解析所述资源加载请求,确定所述目标资源包中第一资源包的包标识;根据所述第一资源包的包标识加载所述目标资源包;从所述目标资源包中确定出所述目标资源集。在本实施例中,游戏业务请求游戏资源时,传入游戏资源标识。资源加载请求中携带由资源的标识,具体地标识可以是资源的名称。确定所需资源的名称后,先确定缓存中是否存在所需资源,若存在直接从缓存中获取所需资源。若不存在,则表示所需资源尚未加载。由于所需资源是打包在资源包中的,因此,需要根据所需资源的标识确定出其所在的资源包的标识,对其所在的资源包进行加载后,在该资源包中确定出所需资源。
作为一个可选的实施例,所述根据所述第一资源包的包标识加载所述目标资源包,包括:获取所述资源包的依赖关系;在所述依赖关系指示所述第一资源包并未被其他资源包依赖的情况下,将所述第一资源包确定为所述目标资源包;加载所述第一资源包;在所述依赖关系指示所述第一资源包被第二资源包依赖的情况下,将所述第一资源包及所述第二资源包确定为所述目标资源包;加载所述第一资源包和所述第二资源包。在本实施例中,资源包之间的依赖关系包括但不限于第一资源包和第二资源包需要同时使用。例如,在目标客户端中执行击杀操作需要同时使用第一资源和第二资源,而第一资源和第二资源分别属于第一资源包和第二资源包中的资源,那么第一资源包和第二资源包是存在依赖关系的。在加载第一资源包AssetBundle时,查找该AssetBundle关系,找到依赖的其他第二资源包,若存在依赖关系的资源包,将第一资源包和第二资源包一并加载。具体地,可以调用AssetBundle.Load接口加载出游戏资源。把加载出的资源加入运行时Asset缓存,并把资源返回给游戏业务使用。
作为一个可选的实施例,在所述根据所述第一资源包的包标识加载所述目标资源包之后,还包括:在所述依赖关系指示所述第一资源包并未被其他资源包依赖,且所述第一资源包并非目标资源类型的情况下,释放所述第一资源包;否则,将所述目标资源包记录到缓存列表。在本实施例中,若加载的第一资源与其他资源并不存在依赖关系,且加载出的资源不是GameObject/Component类型,则调用AssetBundle.Unload(false)释放第一资源AssetBundle。否则将资源包记录到缓存列表中。
作为一个可选的实施例,在所述将所述目标资源集加载至目标缓存之后,还包括:在使用所述目标资源集执行所述目标操作之后,查看所述缓存列表;在所述缓存列表中查找到所述目标资源包的情况下,调用第一插件卸载所述目标资源包中的资源;在所述缓存列表中未查找到所述目标资源包的情况下,调用第二插件卸载所述目标资源包中的资源。在本实施例中,在游戏业务对资源使用完成后,在在运行时Asset资源缓存中移除使用完成的资源。在AssetBundle缓存列表里面查看游戏资源对应的AssetBundle是否还存在。如果存在则找到对应AssetBundle,并调用AssetBundle.Unload(true)完全卸载资源。如果不存在表示AssetBundle已经释放,只需要调用Resources.UnloadAsset将资源完全卸载。
作为一个可选的实施例,在所述从与所述目标客户端对应的目标资源包中确定出与所述目标操作匹配的目标资源集之前,还包括:从资源映射关系表中获取与所述目标资源包匹配的加载路径,其中,所述资源映射关系表用于记录资源包与加载路径之间的对应关系;通过所述加载路径加载所述目标资源包。在本实施例中,资源映射关系表中记录了资源包与资源包的加载路径的关系,从资源映射关系表中可以获取到所要加载的资源包的加载路径,通过加载路径对资源包进行加载。
作为一个可选的实施例,所述方法还包括:根据资源属性对运行所述目标客户端所使用的全部资源进行第一次分组,得到至少两个目标资源分组;按照预设资源大小将每个所述目标资源分组划分为至少两个预备资源集;分别对每个所述目标资源分组中的预备资源集进行打包,得到预备资源包,其中,所述预备资源包中包括所述目标资源包,所述预备资源集中包括所述目标资源集;为每个所述预备资源包分配加载路径,并将每个所述预备资源包和对应的加载路径存储至资源映射关系表中。在本实施例中,对于每个游戏客户端均对应有运行该客户端所需的所有资源,本实施例中对与客户端对应的所有资源进行细小的划分。共进行两次划分,第一次按照资源的属性进行划分,第二次按照预设的资源大小进行划分。本实施例中的资源属性可以包括资源的大小,以及资源的类型。如图3所示是对客户端资源进行第一次划分的流程图,其中包括如下步骤:
步骤1:获取客户端的游戏资源;
步骤2:判断游戏资中每个资源的大小是否超过预设阈值,将超高预设阈值的资源放入组C;
步骤3:对于未超过预设阈值的资源,判断是否是GameObject/Component类型的资源;
步骤4:将GameObject/Component类型的资源放入组B,将不是GameObject/Component类型的资源放入组C。
如图4是所示是对组A、组B和组C中的资源进行进一步的划分流程图,以将组A中的资源进行划分为例,具体包括如下步骤:
步骤一:创建一个空的集合;
步骤二:在组A中依次选取资源元素放入集合中,在资源选取时,优先选取与上一个资源元素具有依赖关系的元素,;
步骤三:判断集合内的资源是否大于预设阈值,具体地预设阈值可以根据实际情况设置,例如,1M、4M或5M;
步骤四:若集合内的资源超出了阈值,将该集合作为一个预备资源集;
步骤五:判断组A中是否还存在资源元素,若存在继续执行上述步骤一至三,若不存在,继续执行步骤六;
步骤六:将所有的预备资源集打包成AssetBundle。
作为一个可选地实施方式,AssetBundle分两个部分组成:序列化信息(SerializedFile),二进制数据文件(streamData),如图5所示。具体地,加载方式可以包括:AssetBundle.LoadFromFile、LoadFromMemory和LoadFromStream。在本实施方式中主要使用AssetBundle.LoadFromFile方式加载。当使用AssetBundle.LoadFromFile加载AssetBundle时,实际上只有序列化信息(SerializedFile)这部分被加载进内存。如图6所示。存在二进制文件的信息只有在AssetBundle.Load接口使用之后,才会将其数据解压并加载到内存中,也就是说,可以按需要加载AssetBundle的部分资源,此时内存分布图如图7所示。
AssetBundle提供的卸载接口是AssetBundle.Unload。其中序列化信息可以通过AssetBundle.Unload(false)提前释放。AssetBundle.Unload(true)则释放序列化信息和所有该AssetBundle加载到内存的资源。具体地,可以根据资源的性质判断哪些资源可以提前释放,进一步减少内存消耗。
resources.unloadasset是unity提供的卸载某个资源(Asset)的接口。其中,resources.unloadasset不支持的资源类型为GameObject/Component/AssetBundle.其中AssetBundle不需要再次打包,Component必须依赖GameObject存在,所以仅需要判断资源是不是GameObject类型,就可以准确区分资源能不能单独卸载。
在本实施例中,提供一种AssetBundle管理方式,可以安全的加载和及时释放资源,并保持对业务逻辑的最少干扰,图8所示根据本实施例的一种资源加载流程图,其中,包括如下步骤:
步骤1:获取游戏资源名称。具体地,游戏业务请求游戏资源时,传入游戏资源名字。
步骤2:根据请求的资源名称中,在运行时Asset缓存中查找,如果找到,则直接返回资源。
步骤3:如果Asset缓存中未查找到所请求的资源,则表示该资源尚未加载,在Asset-AssetBundle映射表中根据资源名字查找对应资源包AssetBundle的加载路径。
步骤4:根据加载路径加载对应的AssetBundle,并查找该AssetBundle的依赖关系,找到依赖的其他AssetBundle,一并加载进来。
步骤5:在从加载出的AssetBundle调用AssetBundle.Load接口提取出游戏资源。把提取出的资源加入运行时Asset缓存。并把资源返回给游戏业务使用。
步骤6:判断步骤4中加载的AssetBundle是否没有被其他AssetBundle依赖,以及加载出的Asset不是GameObject/Component类型;若是,则调用AssetBundle.Unload(false)释放AssetBundle资源,若否,则将步骤4中的AssetBundle记录到AssetBundle缓存列表。
步骤7:等待游戏业务对资源使用完成,在运行时Asset缓存中移除8中使用完成的资源。
步骤8:在AssetBundle缓存列表里面查看游戏资源对应的AssetBundle是否还存在。
步骤9:若存在,则找到对应AssetBundle,并调用AssetBundle.Unload(true)完全卸载资源。
步骤10:若不存在,则表示AssetBundle已经释放,只需要调用Resources.UnloadAsset释放游戏资源,则资源完全卸载。
加载步骤中将会使用以下对象容器:运行时Asset缓存:记录资源路径到资源的映射字典。通过这个缓存,当游戏业务需要获取的资源已经存在于缓存时,就可以直接返回资源,不需要再次加载。Asset-AssetBundle映射表:记录资源路径到AssetBundle加载路径的映射字典。通过这个映射表,可以找到需要加载的AssetBundle加载路径。AssetBundle依赖关系的有向图:记录AssetBundle之间的映射关系,在打包的步骤中生成。因为加载AssetBundle中的资源时,为了保证资源完整性,需要同时把依赖的所有AssetBundle也加载进来,所以需要记录并在游戏启动的时候加载进资源管理模块。AssetBundle缓存列表:保存AssetBundle的加载记录的列表,把加载的AssetBundle记录起来。这样可以在资源使用完之后,找到对应的AssetBundle并释放。
通过本实施例,可以将AssetBundle的管理精细化到里面的Asset。同时避免了资源冗余。通过筛选可以提前释放的AssetBundle,减少了运行时内存。因为使用了缓存技术,避免重复加载AssetBundle,以及因此造成的Asset在内存中冗余。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
根据本发明实施例的另一个方面,还提供了一种用于实施上述资源加载方法的资源加载装置。如图9所示,该装置包括:获取模块92,用于获取资源加载请求,其中,所述资源加载请求用于请求加载在目标客户端中执行目标操作时所需的资源;响应模块94,用于响应所述资源加载请求,从与所述目标客户端对应的目标资源包中确定出与所述目标操作匹配的目标资源集,其中,所述目标资源包中包括至少两个资源集,每个所述资源集的大小小于等于第一阈值;加载模块96,用于将所述目标资源集加载至目标缓存,以在所述目标客户端中执行所述目标操作时提供资源。
作为一个可选实施例,上述响应模块还用于解析所述资源加载请求,确定所述目标资源包中第一资源包的包标识;根据所述第一资源包的包标识加载所述目标资源包;从所述目标资源包中确定出所述目标资源集。
作为一个可选实施例,上述装置还用于获取所述资源包的依赖关系;在所述依赖关系指示所述第一资源包并未被其他资源包依赖的情况下,将所述第一资源包确定为所述目标资源包;加载所述第一资源包;在所述依赖关系指示所述第一资源包被第二资源包依赖的情况下,将所述第一资源包及所述第二资源包确定为所述目标资源包;加载所述第一资源包和所述第二资源包。
作为一个可选实施例,上述装置还用于在所述根据所述第一资源包的包标识加载所述目标资源包之后,在所述依赖关系指示所述第一资源包并未被其他资源包依赖,且所述第一资源包并非目标资源类型的情况下,释放所述第一资源包;否则,将所述目标资源包记录到缓存列表。
作为一个可选实施例,上述装置还用于在所述将所述目标资源集加载至目标缓存之后,在使用所述目标资源集执行所述目标操作之后,查看所述缓存列表;在所述缓存列表中查找到所述目标资源包的情况下,调用第一插件卸载所述目标资源包中的资源;在所述缓存列表中未查找到所述目标资源包的情况下,调用第二插件卸载所述目标资源包中的资源。
作为一个可选实施例,上述装置还用于在所述从与所述目标客户端对应的目标资源包中确定出与所述目标操作匹配的目标资源集之前,还包括:从资源映射关系表中获取与所述目标资源包匹配的加载路径,其中,所述资源映射关系表用于记录资源包与加载路径之间的对应关系;通过所述加载路径加载所述目标资源包。
作为一个可选实施例,上述装置还用于根据资源属性对运行所述目标客户端所使用的全部资源进行第一次分组,得到至少两个目标资源分组;按照预设资源大小将每个所述目标资源分组划分为至少两个预备资源集;分别对每个所述目标资源分组中的预备资源集进行打包,得到预备资源包,其中,所述预备资源包中包括所述目标资源包,所述预备资源集中包括所述目标资源集;为每个所述预备资源包分配加载路径,并将每个所述预备资源包和对应的加载路径存储至资源映射关系表中。
根据本发明实施例的又一个方面,还提供了一种用于实施上述资源加载方法的电子装置,如图10所示,该电子装置包括存储器1002和处理器1004,该存储器1002中存储有计算机程序,该处理器1004被设置为通过计算机程序执行上述任一项方法实施例中的步骤。
可选地,在本实施例中,上述电子装置可以位于计算机网络的多个网络设备中的至少一个网络设备。
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
S1,获取资源加载请求,其中,所述资源加载请求用于请求加载在目标客户端中执行目标操作时所需的资源;
S2,响应所述资源加载请求,从与所述目标客户端对应的目标资源包中确定出与所述目标操作匹配的目标资源集,其中,所述目标资源包中包括至少两个资源集,每个所述资源集的大小小于等于第一阈值;
S3,将所述目标资源集加载至目标缓存,以在所述目标客户端中执行所述目标操作时提供资源。
可选地,本领域普通技术人员可以理解,图10所示的结构仅为示意,电子装置也可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌上电脑以及移动互联网设备(Mobile Internet Devices,MID)、PAD等终端设备。图10其并不对上述电子装置的结构造成限定。例如,电子装置还可包括比图10中所示更多或者更少的组件(如网络接口等),或者具有与图10所示不同的配置。
其中,存储器1002可用于存储软件程序以及模块,如本发明实施例中的资源加载方法和装置对应的程序指令/模块,处理器1004通过运行存储在存储器1002内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的资源加载方法。存储器1002可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器1002可进一步包括相对于处理器1004远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。其中,存储器1002具体可以但不限于用于存储目标资源包和目标资源集等信息。作为一种示例,如图10所示,上述存储器1002中可以但不限于包括上述资源加载装置中的获取模块92、响应模块94及加载模块96。此外,还可以包括但不限于上述资源加载装置中的其他模块单元,本示例中不再赘述。
可选地,上述的传输装置1006用于经由一个网络接收或者发送数据。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输装置1006包括一个网络适配器(Network Interface Controller,NIC),其可通过网线与其他网络设备与路由器相连从而可与互联网或局域网进行通讯。在一个实例中,传输装置1006为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
此外,上述电子装置还包括:显示器1008,用于显示在目标客户端中执行的目标操作;和连接总线1010,用于连接上述电子装置中的各个模块部件。
根据本发明的实施例的又一方面,还提供了一种计算机可读的存储介质,该计算机可读的存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
可选地,在本实施例中,上述计算机可读的存储介质可以被设置为存储用于执行以下步骤的计算机程序:
S1,获取资源加载请求,其中,所述资源加载请求用于请求加载在目标客户端中执行目标操作时所需的资源;
S2,响应所述资源加载请求,从与所述目标客户端对应的目标资源包中确定出与所述目标操作匹配的目标资源集,其中,所述目标资源包中包括至少两个资源集,每个所述资源集的大小小于等于第一阈值;
S3,将所述目标资源集加载至目标缓存,以在所述目标客户端中执行所述目标操作时提供资源。
可选地,在本实施例中,本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(Random Access Memory,RAM)、磁盘或光盘等。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (5)
1.一种资源加载方法,其特征在于,包括:
获取运行目标客户端所使用的全部资源;
根据资源属性对运行所述目标客户端所使用的全部资源进行第一次分组,得到至少两个目标资源分组,其中,所述资源属性包括资源的大小,以及资源的类型;
所述根据资源属性对运行所述目标客户端所使用的全部资源进行第一次分组,得到至少两个目标资源分组,包括:判断所述全部资源中每个资源的大小是否超过第一预设阈值,将超过所述第一预设阈值的资源放入组C,其中,所述至少两个目标资源分组包括组C;判断未超过所述第一预设阈值的资源是否为GameObject/Component类型的资源,将所述GameObject/Component类型的资源放入组B,将不是所述GameObject/Component类型的资源放入组C,其中,所述至少两个目标资源分组包括组B;
按照预设资源大小将每个所述目标资源分组划分为至少两个预备资源集;
所述按照预设资源大小将每个所述目标资源分组划分为至少两个预备资源集,包括:创建至少一个空的集合;在所述目标资源分组中依次选取资源放入所述至少一个空的集合中,其中,在选取资源时,优先选取与上一个被选取资源具有依赖关系的资源;判断所述至少一个空的集合内的资源是否大于第二预设阈值,若所述至少一个空的集合内的资源超出所述第二预设阈值,将所述至少一个空的集合内的资源作为所述预备资源集;
分别对每个所述目标资源分组中的预备资源集进行打包,得到预备资源包,其中,所述预备资源包中包括目标资源包,所述预备资源集中包括目标资源集;
为每个所述预备资源包分配加载路径,并将每个所述预备资源包和对应的加载路径存储至资源映射关系表中;
获取资源加载请求,其中,所述资源加载请求用于请求加载在目标客户端中执行目标操作时所需的资源;
响应所述资源加载请求,解析所述资源加载请求,确定目标资源包中第一资源包的包标识,其中,所述目标资源包中包括至少两个资源集,每个所述资源集的大小小于等于第一阈值,所述目标资源包包括序列化信息和二进制数据文件,所述目标资源包中包括根据资源的性质进行判断的可以提前释放的资源,所述可以提前释放的资源包括所述序列化信息;
根据所述第一资源包的包标识从所述资源映射关系表中获取与所述目标资源包匹配的加载路径,其中,所述资源映射关系表用于记录资源包与加载路径之间的对应关系;
通过所述加载路径加载所述目标资源包的序列化信息,或在所述目标资源包的本地接口使用时,通过所述加载路径加载所述目标资源包的二进制数据文件;
在获取到所述目标资源包的依赖关系、且所述依赖关系指示所述第一资源包并未被其他资源包依赖,且所述第一资源包并非目标资源类型的情况下,释放所述第一资源包;否则,将所述目标资源包记录到缓存列表;
在获取到所述依赖关系、且所述依赖关系指示所述第一资源包并未被其他资源包依赖的情况下,将所述第一资源包确定为所述目标资源包;加载所述第一资源包;
在获取到所述依赖关系、且所述依赖关系指示所述第一资源包被第二资源包依赖的情况下,将所述第一资源包及所述第二资源包确定为所述目标资源包;加载所述第一资源包和所述第二资源包;
从所述目标资源包中确定出所述目标资源集;
将所述目标资源集加载至目标缓存,以在所述目标客户端中执行所述目标操作时提供资源。
2.根据权利要求1所述的方法,其特征在于,在所述将所述目标资源集加载至目标缓存之后,还包括:
在使用所述目标资源集执行所述目标操作之后,查看所述缓存列表;
在所述缓存列表中查找到所述目标资源包的情况下,调用第一插件卸载所述目标资源包中的资源;
在所述缓存列表中未查找到所述目标资源包的情况下,调用第二插件卸载所述目标资源包中的资源。
3.一种资源加载装置,其特征在于,包括:
所述装置,用于获取运行目标客户端所使用的全部资源;
所述装置,用于根据资源类型对运行所述目标客户端所使用的全部资源进行第一次分组,得到至少两个目标资源分组,其中,所述资源属性包括资源的大小,以及资源的类型;所述装置,还用于判断所述全部资源中每个资源的大小是否超过第一预设阈值,将超过所述第一预设阈值的资源放入组C,其中,所述至少两个目标资源分组包括组C;判断未超过所述第一预设阈值的资源是否为GameObject/Component类型的资源,将所述GameObject/Component类型的资源放入组B,将不是所述GameObject/Component类型的资源放入组C,其中,所述至少两个目标资源分组包括组B;
所述装置,用于按照预设资源大小将每个所述目标资源分组划分为至少两个预备资源集;所述装置,还用于创建至少一个空的集合;
在所述目标资源分组中依次选取资源放入所述至少一个空的集合中,其中,在选取资源时,优先选取与上一个被选取资源具有依赖关系的资源;判断所述至少一个空的集合内的资源是否大于第二预设阈值,若所述至少一个空的集合内的资源超出所述第二预设阈值,将所述至少一个空的集合内的资源作为所述预备资源集;
所述装置,用于分别对每个所述目标资源分组中的预备资源集进行打包,得到预备资源包,其中,所述预备资源包中包括目标资源包,所述预备资源集中包括目标资源集;为每个所述预备资源包分配加载路径,并将每个所述预备资源包和对应的加载路径存储至资源映射关系表中;
获取模块,用于获取资源加载请求,其中,所述资源加载请求用于请求加载在目标客户端中执行目标操作时所需的资源;
响应模块,用于响应所述资源加载请求,从与所述目标客户端对应的目标资源包中确定出与所述目标操作匹配的目标资源集,其中,所述目标资源包中包括至少两个资源集,每个所述资源集的大小小于等于第一阈值,所述目标资源包中包括根据资源的性质进行判断的可以提前释放的资源,所述可以提前释放的资源包括序列化信息;
加载模块,用于将所述目标资源集加载至目标缓存,以在所述目标客户端中执行所述目标操作时提供资源;
所述响应模块,还用于解析所述资源加载请求,确定所述目标资源包中第一资源包的包标识,其中,所述目标资源包中包括至少两个资源集,每个所述资源集的大小小于等于第一阈值,所述目标资源包包括序列化信息和从所述资源映射关系表中获取与所述目标资源包匹配的加载路径,其中,所述资源映射关系表用于记录资源包与加载路径之间的对应关系;通过所述加载路径加载所述目标资源包的序列化信息,或在所述目标资源包的本地接口使用时,通过所述加载路径加载所述目标资源包的二进制数据文件;在所述目标资源包的依赖关系指示所述第一资源包并未被其他资源包依赖,且所述第一资源包并非目标资源类型的情况下,释放所述第一资源包;否则,将所述目标资源包记录到缓存列表;从所述目标资源包中确定出所述目标资源集;
所述装置,还用于获取所述依赖关系;在所述依赖关系指示所述第一资源包并未被其他资源包依赖的情况下,将所述第一资源包确定为所述目标资源包;加载所述第一资源包;在所述依赖关系指示所述第一资源包被第二资源包依赖的情况下,将所述第一资源包及所述第二资源包确定为所述目标资源包;加载所述第一资源包和所述第二资源包。
4.一种计算机可读的存储介质,所述计算机可读的存储介质包括存储的程序,其中,所述程序运行时执行上述权利要求1至2任一项中所述的方法。
5.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为通过所述计算机程序执行所述权利要求1至2任一项中所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010060355.5A CN111249744B (zh) | 2020-01-19 | 2020-01-19 | 资源加载方法和装置、存储介质及电子装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010060355.5A CN111249744B (zh) | 2020-01-19 | 2020-01-19 | 资源加载方法和装置、存储介质及电子装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111249744A CN111249744A (zh) | 2020-06-09 |
CN111249744B true CN111249744B (zh) | 2022-04-26 |
Family
ID=70952391
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010060355.5A Active CN111249744B (zh) | 2020-01-19 | 2020-01-19 | 资源加载方法和装置、存储介质及电子装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111249744B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111694873B (zh) * | 2020-06-10 | 2023-10-27 | 腾讯科技(深圳)有限公司 | 虚拟资源包的处理方法、装置及数据库服务器 |
CN111760293B (zh) * | 2020-07-07 | 2024-02-09 | 网易(杭州)网络有限公司 | 时间轴工具的资源动态加载方法及装置、电子设备 |
CN112351103B (zh) * | 2020-11-10 | 2022-12-27 | 上海哔哩哔哩科技有限公司 | 资源管理方法及装置 |
CN112468576B (zh) * | 2020-11-25 | 2023-02-28 | 福建天泉教育科技有限公司 | 一种云内存共享的方法与系统 |
CN112619162B (zh) * | 2020-12-22 | 2023-04-07 | 上海米哈游天命科技有限公司 | 一种资源对象管理方法、装置、电子设备和存储介质 |
CN113181652B (zh) * | 2021-04-23 | 2023-04-14 | 深圳市忒爱玩科技有限公司 | 游戏资源打包方法、系统、设备及存储介质 |
CN113254183A (zh) * | 2021-06-09 | 2021-08-13 | 北京字节跳动网络技术有限公司 | 资源处理方法和装置、存储介质和电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0457159A3 (en) * | 1990-05-18 | 1993-06-16 | Fujitsu Limited | Control method for preventing incorrect reset of common resource and multicomputer system executing the method |
CN105354049A (zh) * | 2015-09-29 | 2016-02-24 | 北京畅游天下网络技术有限公司 | 一种三维动画引擎的资源加载方法、装置及系统 |
CN107038044A (zh) * | 2017-03-27 | 2017-08-11 | 长沙趣动文化科技有限公司 | 基于Unity3D的游戏资源离散加载方法及系统 |
CN109814884A (zh) * | 2018-12-27 | 2019-05-28 | 珠海西山居互动娱乐科技有限公司 | 一种根据游戏资源类型进行资源管理的方法及系统 |
CN110665224A (zh) * | 2019-09-23 | 2020-01-10 | 深圳传音控股股份有限公司 | 终端应用资源的处理方法及装置 |
-
2020
- 2020-01-19 CN CN202010060355.5A patent/CN111249744B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0457159A3 (en) * | 1990-05-18 | 1993-06-16 | Fujitsu Limited | Control method for preventing incorrect reset of common resource and multicomputer system executing the method |
CN105354049A (zh) * | 2015-09-29 | 2016-02-24 | 北京畅游天下网络技术有限公司 | 一种三维动画引擎的资源加载方法、装置及系统 |
CN107038044A (zh) * | 2017-03-27 | 2017-08-11 | 长沙趣动文化科技有限公司 | 基于Unity3D的游戏资源离散加载方法及系统 |
CN109814884A (zh) * | 2018-12-27 | 2019-05-28 | 珠海西山居互动娱乐科技有限公司 | 一种根据游戏资源类型进行资源管理的方法及系统 |
CN110665224A (zh) * | 2019-09-23 | 2020-01-10 | 深圳传音控股股份有限公司 | 终端应用资源的处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN111249744A (zh) | 2020-06-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111249744B (zh) | 资源加载方法和装置、存储介质及电子装置 | |
CN107832100B (zh) | 一种apk插件的加载方法及其终端 | |
CN107395659A (zh) | 一种业务受理及共识的方法及装置 | |
CN111258680B (zh) | 资源加载方法和装置、存储介质及电子装置 | |
CN106933871A (zh) | 短链接处理方法、装置及短链接服务器 | |
CN109344126B (zh) | 贴图的处理方法、装置、存储介质和电子装置 | |
CN107528718A (zh) | 获取资源的方法、装置和系统 | |
CN112328458B (zh) | 基于flink数据引擎的数据处理方法、装置 | |
CN114064563A (zh) | 一种基于对象存储的数据迁移方法和服务器 | |
CN102834806A (zh) | 系统结构管理设备、系统结构管理方法和程序 | |
CN106844793A (zh) | 实例服务的管理方法、装置及系统 | |
CN111641676B (zh) | 一种第三方云监控服务的构建方法及装置 | |
US20170142203A1 (en) | Method for host scheduling for container deployment, electronic device and non-transitory computer-readable storage medium | |
CN107368563B (zh) | 数据库数据的删除方法及装置、电子设备、存储介质 | |
CN107526636B (zh) | 资源识别方法及装置 | |
CN108376110A (zh) | 一种自动检测方法、系统及终端设备 | |
CN113971163A (zh) | 一种小文件合并存储方法、读取方法以及服务器 | |
CN111382136B (zh) | 文件系统镜像及文件请求方法 | |
EP3748493B1 (en) | Method and device for downloading installation-free application | |
CN104375871A (zh) | 一种基于eMMC加速系统开机的方法和装置 | |
CN113918519A (zh) | 一种文件夹挂载方法、装置及终端设备 | |
CN112631638A (zh) | 终端应用更新方法、装置、存储介质及电子设备 | |
CN115658606B (zh) | 文件处理方法和装置、存储介质及电子装置 | |
CN110474954A (zh) | 基于区块链的文件分享方法、装置、计算机设备及可读存储介质 | |
CN111984299A (zh) | 一种数据加载的方法和设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40024293 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |