买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】一种对象资源处理方法、装置及系统_腾讯科技(深圳)有限公司_201611041443.0 

申请/专利权人:腾讯科技(深圳)有限公司

申请日:2016-11-23

公开(公告)日:2021-04-27

公开(公告)号:CN106708623B

主分类号:G06F9/50(20060101)

分类号:G06F9/50(20060101)

优先权:

专利状态码:有效-授权

法律状态:2021.04.27#授权;2017.06.16#实质审查的生效;2017.05.24#公开

摘要:本申请公开了一种对象资源处理方法、装置及系统,本申请在删除场景对象时,进一步分析其所引用的目标分类资源,在删除场景对象后对目标分类资源的引用量进行更新,根据更新后的目标分类资源的引用量,确定引用量表示未被任何场景对象引用的目标分类资源,进而将该目标分类资源从内存中删除,在保证了已创建的各场景对象正常运行的情况下,大大降低了内存的占用。

主权项:1.一种对象资源处理方法,其特征在于,包括:在确定应用场景内存在角色退出当前场景界面时,确定需要将与所述角色对应的场景对象进行缓存;判断缓存队列是否已满;若是,从所述缓存队列中确定一场景对象进行删除,以将与所述角色对应的场景对象存入缓存队列中,在删除缓存中已创建的场景对象时,确定所述场景对象所引用的各目标分类资源,其中,缓存队列中需要删除的场景对象是按照先进先出原则确定的最早一个存入缓存队列的场景对象;所述场景对象所引用的各目标分类资源,是通过对应用内场景对象进行资源分解后确定出来的;根据所述场景对象所引用的各目标分类资源,在删除所述场景对象后对所述各目标分类资源的引用量进行更新,得到本次更新后的各目标分类资源的引用量;其中,目标分类资源的引用量在引用该目标分类资源的各场景对象创建和删除时进行更新;根据本次更新后的各目标分类资源的引用量,确定引用量表示未被任何场景对象引用的目标分类资源;将确定的未被任何场景对象引用的目标分类资源从内存中删除。

全文数据:一种对象资源处理方法、装置及系统技术领域[0001]本申请涉及资源处理处理技术领域,更具体地说,涉及一种对象资源处理方法、装置及系统。背景技术[0002]随着互联网的发展,各种类型的应用也如雨后春笋般出现,为用户提供了多样化的网络业务,如视频业务、游戏业务、网络直播业务等等,极大的丰富了用户的生活。[0003]应用业务场景中,每产生一个新的场景对象都会调用各分类资源,以游戏业务为例,游戏场景中的角色的创建会调用动画控制器资源、模型网络资源、材质资源、纹理资源等。各分类资源可以同时被多个场景对象所调用,因此,在创建一个场景对象时,如果该场景对象所调用的分类资源己经加载入内存,则可以直接使用,否则,需要将对应的分类资源载入内存中。而在确定某一场景对象需要被删除时,为了避免该场景对象所调用的分类资源同时被其它场景对象所调用,现有技术仅仅将场景对象本身删除,并未删除场景对象所调用的分类资源。进而伴随着场景对象的产生,载入内存中的分类资源也越来越多,导致应用占用内存过高。[0004]因此,现有技术亟需一种资源管理方案,以解决现有技术伴随场景对象的产生,内存占用过高的问题。发明内容[0005]有鉴于此,本申请提供了一种对象资源处理方法、装置及系统,以解决现有技术随场景对象的产生,应用内存占用过高的问题。[0006]为了实现上述目的,现提出的方案如下:[0007]一种对象资源处理方法,包括:[0008]在删除缓存中已创建的场景对象时,确定所述场景对象所引用的各目标分类资源;[0009]根据所述场景对象所引用的各目标分类资源,在删除所述场景对象后对所述各目标分类资源的引用量进行更新,得到本次更新后的各目标分类资源的引用量;其中,目标分类资源的引用量在引用该目标分类资源的各场景对象创建和删除时进行更新;[0010]根据本次更新后的各目标分类资源的引用量,确定引用量表示未被任何场景对象引用的目标分类资源;[0011]将确定的未被任何场景对象引用的目标分类资源从内存中删除。[0012]另一种对象资源处理方法,包括:[0013]在确定需要创建目标类型的场景对象时,创建该目标类型的场景对象;[0014]确定所述场景对象所引用的各目标分类资源;[0015]根据所述场景对象所引用的各目标分类资源,在创建所述场景对象后对所述各目标分类资源的引用量进行更新;所述目标分类资源的引用量表示引用该目标分类资源的场景对象的数量。[0016]一种对象资源处理装置,包括:、[0017]对象删除单元,用于在删除缓存中已创建的场景对象时,确定所述场景对象所引用的各目标分类资源;[0018]删除更新单元,用于根据所述场景对象所引用的各目标分类资源,在删除所述场景对象后对所述各目标分类资源的引用量进行更新,得到本次更新后的各目标分类资源的引用量;其中,目标分类资源的引用量在引用该目标分类资源的各场景对象创建和删除时进行更新;[0019]分类资源确定单元,用于根据本次更新后的各目标分类资源的引用量,确定引用量表示未被任何场景对象引用的目标分类资源;_[0020]分类资源删除单元,用于将确定的未被任何场景对象引用的目标分类资源从内存中删除。[0021]另一种对象资源处理装置,包括:_[0022]对象创建单元,用于在确定需要创建目标类型的场景对象时,创建该目标类型的场景对象;[0023]引用分类资源确定单元,用于确定所述场景对象所引用的各目标分类资源;[0024]创建更新单元,用于根据所述场景对象所引用的各目标分类资源,在创建所述场景对象后对所述各目标分类资源的引用量进行更新;所述目标分类资源的引用量表示引用该目标分类资源的场景对象的数量。[0025]一种对象资源处理系统,其特征在于,包括上述示例的两种对象资源处理装置。[0026]本申请实施例提供的对象资源处理方法,在删除缓存中已创建的场景对象时,确定所述场景对象所引用的各目标分类资源;根据所述场景对象所引用的各目标分类资源,在删除所述场景对象后对所述各目标分类资源的引用量进行更新,得到本次更新后的各目标分类资源的引用量;其中,目标分类资源的引用量在引用该目标分类资源的各场景对象创建和删除时进行更新;根据本次更新后的各目标分类资源的引用量,确定引用量表示未被任何场景对象引用的目标分类资源;将确定的未被任何场景对象引用的目标分类资源从内存中删除。由此可见,本申请在删除场景对象时,进一步分析其所引用的目标分类资源,在删除场景对象后对目标分类资源的引用量进行更新,根据更新后的目标分类资源的引用量,确定引用量表示未被任何场景对象引用的目标分类资源,进而将该目标分类资源从内存中删除,在保证了己创建的各场景对象正常运行的情况下,大大降低了内存的占用。附图说明[0027]为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。[0028]图1为本申请实施例公开的一种对象资源处理方法流程图;[0029]图2为本申请示例的一种角色对象引用分类资源的示意图;[0030]图3为本申请实施例公开的另一种对象资源处理方法流程图;[0031]图4为本申请实施例公开的又一种对象资源处理方法流程图;[0032]图5为本申请实施例公开的又一种对象资源处理方法流程图;[0033]图6为本申请实施例公开的一种对象资源处理装置结构示意图;[0034]图7为本申请实施例公开的另一种对象资源处理装置结构示意图;[0035]图8为本申请实施例公开的一种终端设备硬件结构示意图。具体实施方式[0036]下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。[0037]本申请实施例公开了一种对象资源处理方案,应用于终端设备,终端设备。终端设备可以是手机、IPAD、电脑等可以运行应用客户端的设备。应用客户端所运行的业务场景中存在场景对象的创建和删除,本申请在删除场景对象时,进一步确定场景对象所引用的各目标分类资源,各目标分类资源对应设置有引用量,引用量能够在引用该目标分类资源的场景对象创建和删除时进行更新。进而,在确定目标分类资源的引用量表示该目标分类资源未被任何场景对象引用时,可以将该目标分类资源从内存中删除,降低应用内存占用。[0038]接下来的实施例中,对本申请的对象资源处理方法进行详细介绍,参见图1所示,该方法包括:[0039]步骤S100、在删除缓存中已创建的场景对象时,确定所述场景对象所引用的各目标分类资源;[0040]这里首先对分类资源进行介绍。[0041]根据应用的不同,应用内场景对象所引用的资源类型也不完全相同。本申请以一款游戏应用内角色所引用的资源进行说明,参见图2,其实例了一种角色对象的资源分解示意图。从图2可以看出,角色对象可以由Animator动画组件和SkinnedMeshRenderer蒙皮网格渲染器两种Component组件)构成,两种组件分别可以分解为多个分类资源。其中,Animator可以分解为AnimatorController动画控制器),而AnimatorController又可以进一步分解为AnimationClip动画片段)和Avatar。SkinnedMeshRenderer可以分解为Mesh模型网格和Material材质),其中Material又可以进一步分解为Texture纹理)。[0042]如图2示例的,其中虚线框包含的即是角色对象所引用的各分类资源。包括:AnimatorController、AnimationClip、Avatar、Mesh、Material、Texture分类资源0[0043]当然,上述仅仅示例了一种角色对象的资源分解方式,针对其它场景对象也可以存在其它的资源分解方法。[0044]本步骤中,在确定需要删除缓存中已创建的场景对象时,进一步确定该场景对象所引用的各分类资源,作为目标分类资源。[0045]其中,确定需要删除缓存中已创建的场景对象的过程,可以是应用场景内存在角色退出当前场景界面时,确定需要将与该角色对应的场景对象进行缓存。进一步,判断缓存队列中是否已满,如果是,则确定需要从缓存队列中删除一个场景对象,以将与角色对应的场景对象存入缓存中。其中,缓存队列中需要删除的场景对象可以是按照先进先出原则确定的最早一个存入缓存队列的场景对象。[0046]步骤S110、根据所述场景对象所引用的各目标分类资源,在删除所述场景对象后对所述各目标分类资源的引用量进行更新,得到本次更新后的各目标分类资源的引用量;[0047]其中,目标分类资源的引用量在引用该目标分类资源的各场景对象创建和删除时进行更新。这里,引用该目标分类资源的各场景对象可以包括本步骤中删除的场景对象,也可以进一步包括其它引用该目标分类资源的各场景对象。—[0048]可以理解的是,若引用目标分类资源的场景对象删除,则对目标分类资源的引用量的更新方式为减少引用量,如将引用量减1;若引用目标分类资源的场景对象创建,则对目标分类资源的引用量的更新方式为增加引用量,如将引用量加1。[0049]目标分类资源的初始引用量表示该目标分类资源未被任何场景对象引用,初始引用量可以设置为0,或者其它数值。_[0050]步骤S120、根据本次更新后的各目标分类资源的引用量,确定引用量表示未被任何场景对象引用的目标分类资源;[0051]具体地,若本次更新后的目标分类资源的引用量表示未被任何场景对象引用,则该目标分类资源可以被删除。^[0052]其中,表示未被任何场景对象引用的引用量可以是初始引用量,即如果确定本次更新后的目标分类资源的引用量为初始引用量,则可以将该目标分类资源确定为删除对象。[0053]步骤S130、将确定的未被任何场景对象引用的目标分类资源从内存中删除。[0054]在确定出未被任何场景对象引用的目标分类资源之后,可以确定该目标分类资源的删除不会对现有的各场景对象的运行产生影响,因此为了降低内存占用,可以将该目标分类资源从内存中删除,也即从内存中卸载掉。[0055]本申请实施例提供的对象资源处理方法,在删除缓存中已创建的场景对象时,确定所述场景对象所引用的各目标分类资源;根据所述场景对象所引用的各目标分类资源,在删除所述场景对象后对所述各目标分类资源的引用量进行更新,得到本次更新后的各目标分类资源的引用量;其中,目标分类资源的引用量在引用该目标分类资源的各场景对象创建和删除时进行更新;根据本次更新后的各目标分类资源的引用量,确定引用量表示未被任何场景对象引用的目标分类资源;将确定的未被任何场景对象引用的目标分类资源从内存中删除。由此可见,本申请在删除场景对象时,进一步分析其所引用的目标分类资源,在删除场景对象后对目标分类资源的引用量进行更新,根据更新后的目标分类资源的引用量,确定引用量表示未被任何场景对象引用的目标分类资源,进而将该目标分类资源从内存中删除,在保证了已创建的各场景对象正常运行的情况下,大大降低了内存的占用。[0056]可选的,根据应用开发引擎的不同,创建的场景对象也不同。接下来以unity3D引擎开发的应用为例,对本申请方案进行详细介绍。[0057]基于unity3D引擎所创建的场景对象包括对象实例以及预制件prefab,所述prefab用于在实例化后生成对象实例。[0058]首先对prefab进行简要介绍:[0059]在进行一些功能开发的时候,开发人员常常将一些能够复用的对象制作成预制件prefab。当某一场景内需要产生一对象实例时,可以通过对prefab进行实例化,得到对象实例。其中,一个prefab能够实例化得到一种类型的对象实例,当然,根据场景不同,可以对prefab实例化后得到的对象实例的属性进行调整。[0060]对于prefab及对象实例,都会引用分类资源。[0061]接下来参见图3,图3中以unity3D引擎开发的应用为例,对本申请的对象资源处理方法进行介绍,如图3所示,该方法包括:[0062]步骤S300、在删除缓存中已创建的对象实例时,确定所述对象实例所引用的各分类资源,作为第一目标分类资源;[0063]具体地,删除对象实例的时机可以是,应用场景中存在角色退出视野,需要将该角色对应的对象实例添加如缓存,而此时缓存队列已满,则需要从缓存队列中删除一对象实例。[0064]对象实例所引用的分类资源可以参照图2示例的情况,将对象实例所引用的各分类资源作为第一目标分类资源。[0065]步骤S310、根据所述对象实例所引用的各第一目标分类资源,在删除所述对象实例后对各第一目标分类资源的引用量进行更新,得到本次更新后的各第一目标分类资源的引用量;[0066]步骤S320、确定实例化生成所述对象实例的prefab是否需要删除;若是,执行步骤S330;[0067]其中,所述prefab用于在其实例化后得到的各对象实例均删除后进行删除。[0068]一个prefab可以实例化得到多个对象实例,只有在prefab实例化得到的各对象实例均删除后,该prefab才可以删除。因此,本步骤中确定实例化生成所述对象实例的prefab是否需要删除的过程,可以包括:[0069]确定该prefab实例化生成的各对象实例是否均删除完毕,如果是,则确定该prefab需要删除。[0070]步骤S330、删除所述prefab,并确定所述prefab所引用的各分类资源,作为第二目标分类资源;[0071]具体地,在确定prefab需要删除时,将其从内存中删除。并确定该prefab所引用的各分类资源,作为第二目标分类资源。[0072]可以理解的是,第二目标分类资源与第一目标分类资源可以全部或部分相同,也可以完全不同。[0073]步骤S340、根据prefab所引用的各第二目标分类资源,在删除所述prefab后对各第二目标分类资源的引用量进行更新,得到本次更新后的各第二目标分类资源的引用量;[0074]本步骤中,在删除prefab后,对其所引用的各第二目标分类资源的引用量进行更新,该更新方式为减小更新,如对各第二目标分类资源的引用量减1。当然,每次更新时增加和减少的数值需要相同,如均以1为单位。[0075]步骤S350、根据本次更新后的各第二目标分类资源的引用量,确定引用量表示未被任何对象实例及prefab引用的第二目标分类资源;[0076]具体地,分类资源的更新时机为引用该分类资源的对象实例创建和删除时,以及引用该分类资源的prefab创建和删除时。由于prefab只有在其实例化得到的各对象实例全部删除后才能够删除,因此本申请可以在删除prefab,并对prefab所引用的各第二目标分类资源的引用量进行更新后,根据更新后各第二目标分类资源的引用量,确定引用量表示未被任何对象实例及prefab引用的第二目标分类资源。[0077]步骤S360、调用Unity3D引擎提供的删除方法,将确定的未被任何场景对象引用的目标分类资源从内存中删除。[0078]其中,unity3D引擎提供的删除方法可以包括Resources.UnloadAsset方法。[0079]本申请的方法适用于MMORPGMassiveMultiplayerOnlineRole-PlayingGame,大型多人在线角色扮演游戏应用,同一屏幕中大量角色进出视野,可以在不断加载新资源的同时,卸载掉不用的资源,降低了内存消耗,且不会影响游戏的稳定性。[0080]仍参见图2示例的角色对象的分类资源分解方式,各分类资源包括:AnimatorController、AnimationClip、Avatar、Mesh、Material、Texture分类资源。[0081]其中,对于AnimatorController、Avatar、Mesh、Material,unity3D引擎均提供了直接获取的接口,而unity3D引擎并未直接提供对AnimationClip和Texture的获取接口。[0082]基于此,本实施例中可以将AnimatorController转换为AnimatorOverrideController,进而可以利用unity3D弓丨擎提供的对AnimatorOverrideController的获取接口,通过该接口获取AnimationClip。[0083]进一步,unity3D引擎并未提供遍历获取所有Texture的接口,只提供了通过纹理标识获取对应Texture的接口。为此,本申请设计了获取对象实例在Texture分类资源中所引用的目标Texture的方法,该方法可以包括:[0084]S1、确定所述对象实例创建过程所使用的着色器Shader;[0085]S2、获取与所述Shader对应的纹理名单,所述纹理名单包括对应的Shader在创建所述对象实例时所使用的各纹理的标识;[0086]具体地,本申请可以将Shader在创建对象实例时所使用的各纹理的标识导出成xml文件。[0087]S3、通过unity3D引擎所提供的纹理获取接口,输入所述纹理名单中各纹理的标识,以得到unity3D引擎返回的与各标识对应的目标纹理Texture。[0088]与上述各实施例对应的,本申请实施例进一步介绍了有一种对象资源处理方法,该方法介绍了创建场景对象的过程,该过程中包括对场景对象所引用的分类资源的引用量的更新过程,参见图4所示,该方法包括:[0089]步骤S400、在确定需要创建目标类型的场景对象时,创建该目标类型的场景对象;[0090]具体地,当存在角色进入当前场景界面时,可以确定需要创建与该角色对应的目标类型的场景对象。[0091]步骤S410、确定所述场景对象所引用的各目标分类资源;[0092]具体地,在创建场景对象之后,确定该场景对象所引用的各目标分类资源。其中,对象的分类资源的分解方式可以参照图2示例的情况。[0093]步骤S420、根据所述场景对象所引用的各目标分类资源,在创建所述场景对象后对所述各目标分类资源的引用量进行更新。[0094]其中,所述目标分类资源的引用量表示引用该目标分类资源的场景对象的数量。[0095]可以理解的是,这里在创建场景对象后,对场景对应所引用的各目标分类资源的弓丨用量的更新方式可以是,增加引用量数值,如对引用量加1。当然,这里引用量每次增加数值需要与前述实施例中引用量每次减少数值相同,如设置引用目标分类资源的场景对象创建时,对该目标分类资源的引用量加1,引用目标分类资源的场景对象删除时,对该目标分类资源的引用量减1。目标分类资源初始引用量可以设置为〇。[0096]按照本申请实施例提供的对象资源处理方法,在创建场景对象时,进一步分析场景对象所引用的各目标分类资源,并在创建所述场景对象后对所述各目标分类资源的引用量进行更新,同时,目标分类资源的引用量还用于在引用该目标分类资源的场景对象删除时进行更新,便于在确定某一目标分类资源的引用量表示未被任何场景对象引用时,可以将该目标分类资源从内存中删除,减少内存占用。[0097]接下来的实施例中,以unity3D引擎开发的应用为例,对本申请方案进行详细介绍。[0098]基于unity3D引擎所创建的场景对象包括对象实例以及预制件prefab,所述prefab用于在实例化后生成对象实例。[0099]参见图5,图5中以unity3D引擎开发的应用为例,对本申请的对象资源处理方法进行介绍,如图5所示,该方法包括:[0100]步骤S500、在确定需要创建目标类型的场景对象时,确定缓存中是否存在与所述目标类型对应的prefab;若是,执行步骤S510,若否,执行步骤S540;[0101]步骤S510、对所述与所述目标类型对应的prefab进行实例化,得到第一对象实例;[0102]步骤S520、确定该第一对象实例所引用的各第一目标分类资源;[0103]步骤S530、根据所述第一对象实例所引用的各第一目标分类资源,对各所述第一目标分类资源的引用量进行更新;[0104]具体地,在创建所述第一对象实例后对各所述第一目标分类资源的引用量进行更新。[0105]步骤S540、从内存中创建与所述目标类型对应的prefab,并对创建得到的prefab进行实例化,得到第二对象实例;[0106]步骤S550、确定该创建的prefab所引用的各第二目标分类资源,以及该第二对象实例所引用的各第三目标分类资源;[0107]步骤S560、根据创建的所述prefab所引用的各第二目标分类资源,在创建所述prefab后对各所述第二目标分类资源的引用量进行更新;[0108]步骤S570、根据所述第二对象实例所引用的各第三目标分类资源,在创建所述第二对象实例后对各所述第三目标分类资源的引用量进行更新。[0109]其中,第一目标分类资源、第二目标分类资源和第三目标分类资源仅仅是便于表述,并无本质上的区别,三者可以完全或部分相同,也可以完全不相同。[0110]根据上述实施例可以确定,分类资源的引用量以增加方式进行更新的时机可以包括:[0111]引用该分类资源的prefab创建时、引用该分类资源的对象实例创建时该过程包括,以缓存的prefab进行实例化创建对象实例,以及以新创建的Prefab进行实例化创建对象实例)。[0112]综上所述:_[0113]每当一个prefab创建时,需要对其引用的各目标分类资源以增加方式进行更新;每当一个对象实例创建时需要对其引用的各目标分类资源以增加方式进行更新。其中,增加方式更新可以包括引用量加1。[0114]每当一个对象实例删除时,需要对其引用的各目标分类资源的引用量以减少方式进行式更新;每当一个prefab删除时,需要对其引用的各目标分类资源的引用量以减少方式进行式更新。其中,减少方式更新可以包括引用量减1。[0115]在prefab删除时,根据更新后所述prefab引用的各目标分类资源的引用量,从中确定引用量表示未被任何prefab和对象实例引用的目标分类资源,将其从内存中删除。[0116]下面对本申请实施例提供的对象资源处理装置进行描述,下文描述的对象资源处理装置与上文描述的对象资源处理方法可相互对应参照。[0117]本申请实施例公开了对象资源处理装置的两种不同结构,分别如图6和图7所示,分别介绍如下:[0118]第一种结构,如图6所示,对象资源处理装置包括:[0119]对象删除单元11,用于在删除缓存中已创建的场景对象时,确定所述场景对象所引用的各目标分类资源;[0120]删除更新单元12,用于根据所述场景对象所引用的各目标分类资源,在删除所述场景对象后对所述各目标分类资源的引用量进行更新,得到本次更新后的各目标分类资源的引用量;其中,目标分类资源的引用量在引用该目标分类资源的各场景对象创建和删除时进行更新;[0121]分类资源确定单元13,用于根据本次更新后的各目标分类资源的引用量,确定引用量表示未被任何场景对象引用的目标分类资源;[0122]分类资源删除单元14,用于将确定的未被任何场景对象引用的目标分类资源从内存中删除。[0123]可选的,所述场景对象可以是基于unity3D引擎所创建;所述场景对象包括对象实例以及预制件prefab,所述prefab用于在实例化后生成对象实例。基于此,对象删除单元确定所述场景对象所引用的各目标分类资源的过程,具体可以包括:[0124]在删除缓存中己创建的对象实例时,确定所述对象实例所引用的各分类资源,作为第一目标分类资源;[0125]确定删除所述对象实例后,实例化生成所述对象实例的prefab是否需要删除;其中,所述prefab用于在其实例化后得到的各对象实例均删除后进行删除;[0126]若是,删除所述prefab,并确定所述prefab所引用的各分类资源,作为第二目标分类资源。[0127]可选的,删除更新单元在删除所述场景对象后对所述各目标分类资源的引用量进行更新的过程,具体可以包括:[0128]根据所述对象实例所引用的各第一目标分类资源,在删除所述对象实例后对各第一目标分类资源的引用量进行更新,得到本次更新后的各第一目标分类资源的引用量;[0129]根据prefab所引用的各第二目标分类资源,在删除所述prefab后对各第二目标分类资源的引用量进行更新,得到本次更新后的各第二目标分类资源的引用量。[0130]可选的,分类资源确定单元根据本次更新后的各目标分类资源的引用量,确定引用量表示未被任何场景对象引用的目标分类资源的过程,具体可以包括:[0131]根据本次更新后的各第二目标分类资源的引用量,确定引用量表示未被任何对象实例及prefab引用的第二目标分类资源。[0132]可选的,分类资源删除单元将确定的未被任何场景对象引用的目标分类资源从内存中删除的过程,具体可以包括:[0133]调用unity3D引擎提供的Resources.UnloadAsset方法,将确定的未被任何场景对象引用的目标分类资源从内存中删除。[0134]可选的,所述分类资源可以包括纹理Texture分类资源。则对象删除单元确定对象实例在Texture分类资源中所引用的目标Texture的过程,具体可以包括:[0135]确定所述对象实例创建过程所使用的着色器Shader;[0136]获取与所述Shader对应的纹理名单,所述纹理名单包括对应的Shader在创建所述对象实例时所使用的各纹理的标识;[0137]通过unity3D引擎所提供的纹理获取接口,输入所述纹理名单中各纹理的标识,以得到unity3D引擎返回的与各标识对应的目标纹理Texture。[0138]可选的,本申请的装置还可以包括:[0139]缓存确定单元,用于在确定应用场景内存在角色退出当前场景界面时,确定需要将与所述角色对应的场景对象进行缓存;_]队列状态判断单元,用于判断缓存队列是否已满;若是,从所述缓存队列中确定一场景对象进行删除,以将与所述角色对应的场景对象存入缓存队列中,并执行所述对象删除单元。[0141]第二种结构,如图7所示,对象资源处理装置包括:[0142]对象创建单元21,用于在确定需要创建目标类型的场景对象时,创建该目标类型的场景对象;[0143]引用分类资源确定单元22,用于确定所述场景对象所引用的各目标分类资源;[0144]创建更新单元23,用于根据所述场景对象所引用的各目标分类资源,在创建所述场景对象后对所述各目标分类资源的引用量进行更新;所述目标分类资源的引用量表示引用该目标分类资源的场景对象的数量。[0145]可选的,所述场景对象可以是基于unity3D引擎所创建;所述场景对象包括对象实例以及预制件prefab,所述prefab用于在实例化后生成对象实例。基于此,对象创建单元创建该目标类型的场景对象的过程,可以包括:[0146]确定缓存中是否存在与所述目标类型对应的prefab;[0147]若是,对所述与所述目标类型对应的prefab进行实例化,得到第一对象实例;[0148]若否,从内存中创建与所述目标类型对应的prefab,并对创建得到的prefab进行实例化,得到第二对象实例。[0149]可选的,引用分类资源确定单元确定所述场景对象所引用的各目标分类资源的过程,具体可以包括:[0150]在通过缓存中的prefab实例化得到第一对象实例后,确定该第一对象实例所引用的各第一目标分类资源;[0151]在从内存中创建与所述目标类型对应的prefab,并对其进行实例化得到第二对象实例后,确定该创建的prefab所引用的各第二目标分类资源,以及该第二对象实例所引用的各第三目标分类资源。[0152]可选的,创建更新单元根据所述场景对象所引用的各目标分类资源,在创建所述场景对象后对所述各目标分类资源的引用量进行更新的过程,具体可以包括:[0153]根据所述第一对象实例所引用的各第一目标分类资源,在创建所述第一对象实例后对各所述第一目标分类资源的引用量进行更新;[0154]根据创建的所述prefab所引用的各第二目标分类资源,在创建所述prefab后对各所述第二目标分类资源的引用量进行更新;[0155]根据所述第二对象实例所引用的各第三目标分类资源,在创建所述第二对象实例后对各所述第三目标分类资源的引用量进行更新。[0156]接下来的实施例中,对实现本申请的项目数据处理装置的终端设备的硬件结构进行介绍,参见图8,图8为本申请实施例提供的一种终端设备硬件结构示意图。[0157]如图8所示,服务器可以包括:[0158]处理器1,通信接口2,存储器3,通信总线4,和显示屏5;[0159]其中处理器1、通信接口2、存储器3和显示屏5通过通信总线4完成相互间的通信;[0160]可选的,通信接口2可以为通信模块的接口,如GSM模块的接口;[0161]处理器1,用于执行程序;[0162]存储器3,用于存放程序;[0163]程序可以包括程序代码,所述程序代码包括处理器的操作指令。[0164]处理器1可能是一个中央处理器CPU,或者是特定集成电路ASICApplicationSpecificIntegratedCircuit,或者是被配置成实施本申请实施例的一个或多个集成电路。[0165]存储器3可能包含高速RAM存储器,也可能还包括非易失性存储器non-volatilememory,例如至少一个磁盘存储器。[0166]其中,程序具体用于:[0167]在删除缓存中己创建的场景对象时,确定所述场景对象所引用的各目标分类资源;[0168]根据所述场景对象所引用的各目标分类资源,在删除所述场景对象后对所述各目标分类资源的引用量进行更新,得到本次更新后的各目标分类资源的引用量;其中,目标分类资源的引用量在引用该目标分类资源的各场景对象创建和删除时进行更新;[0169]根据本次更新后的各目标分类资源的引用量,确定引用量表示未被任何场景对象引用的目标分类资源;[0170]将确定的未被任何场景对象引用的目标分类资源从内存中删除。[0171]或者,[0172]在确定需要创建目标类型的场景对象时,创建该目标类型的场景对象;[0173]确定所述场景对象所引用的各目标分类资源;[0174]根据所述场景对象所引用的各目标分类资源,在创建所述场景对象后对所述各目标分类资源的引用量进行更新;所述目标分类资源的引用量表示引用该目标分类资源的场景对象的数量。[0175]最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。[0176]本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。[0177]对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

权利要求:1.一种对象资源处理方法,其特征在于,包括:在删除缓存中己创建的场景对象时,确定所述场景对象所引用的各目标分类资源;根据所述场景对象所引用的各目标分类资源,在删除所述场景对象后对所述各目标分类资源的引用量进行更新,得到本次更新后的各目标分类资源的引用量;其中,目标分类资源的引用量在引用该目标分类资源的各场景对象创建和删除时进行更新;根据本次更新后的各目标分类资源的引用量,确定引用量表示未被任何场景对象引用的目标分类资源;将确定的未被任何场景对象引用的目标分类资源从内存中删除。2.根据权利要求1所述的方法,其特征在于,所述场景对象为基于unity3D引擎所创建;所述场景对象包括对象实例以及预制件Prefab,所述prefab用于在实例化后生成对象实例;所述在删除缓存中已创建的场景对象时,确定所述场景对象所引用的各目标分类资源,包括:在删除缓存中已创建的对象实例时,确定所述对象实例所引用的各分类资源,作为第一目标分类资源;确定删除所述对象实例后,实例化生成所述对象实例的Prefab是否需要删除;其中,所述prefab用于在其实例化后得到的各对象实例均删除后进fT删除;若是,删除所述prefab,并确定所述prefab所引用的各分类资源,作为第二目标分类资源。3.根据权利要求2所述的方法,其特征在于,所述根据所述场景对象所引用的各目标分类资源,在删除所述场景对象后对所述各目标分类资源的引用量进行更新,包括:根据所述对象实例所引用的各第一目标分类资源,在删除所述对象实例后对各第一目标分类资源的引用量进行更新,得到本次更新后的各第一目标分类资源的引用量;根据prefab所引用的各第二目标分类资源,在删除所述prefab后对各第二目标分类资源的引用量进行更新,得到本次更新后的各第二目标分类资源的引用量。4.根据权利要求3所述的方法,其特征在于,所述根据本次更新后的各目标分类资源的引用量,确定引用量表示未被任何场景对象引用的目标分类资源,包括:根据本次更新后的各第二目标分类资源的引用量,确定引用量表示未被任何对象实例及prefab引用的第二目标分类资源。5.根据权利要求2所述的方法,其特征在于,所述分类资源包括纹理Texture分类资源;确定对象实例在Texture分类资源中所引用的目标Texture的过程,包括:确定所述对象实例创建过程所使用的着色器Shader;获取与所述Shader对应的纹理名单,所述纹理名单包括对应的Shader在创建所述对象实例时所使用的各纹理的标识;通过unity3D引擎所提供的纹理获取接口,输入所述纹理名单中各纹理的标识,以得到unity3D引擎返回的与各标识对应的目标纹理Texture。6.根据权利要求2所述的方法,其特征在于,所述将确定的未被任何场景对象引用的目标分类资源从内存中删除,包括:调用unity3D引擎提供的Resources.UnloadAsset〇方法,将确定的未被任何场景对象引用的目标分类资源从内存中删除。7.根据权利要求1-6任一项所述的方法,其特征在于,还包括:在确定应用场景内存在角色退出当前场景界面时,确定需要将与所述角色对应的场景对象进行缓存;判断缓存队列是否已满;若是,从所述缓存队列中确定一场景对象进行删除,以将与所述角色对应的场景对象存入缓存队列中,并执行所述在删除缓存中已创建的场景对象时,确定所述场景对象所引用的各目标分类资源的步骤。8.—种对象资源处理方法,其特征在于,包括:在确定需要创建目标类型的场景对象时,创建该目标类型的场景对象;确定所述场景对象所引用的各目标分类资源;根据所述场景对象所引用的各目标分类资源,在创建所述场景对象后对所述各目标分类资源的引用量进行更新;所述目标分类资源的引用量表示引用该目标分类资源的场景对象的数量。9.根据权利要求8所述的方法,其特征在于,所述场景对象为基于unity3D引擎所创建;所述场景对象包括对象实例以及预制件prefab,所述prefab用于在实例化后生成对象实例;所述创建该目标类型的场景对象,包括:确定缓存中是否存在与所述目标类型对应的prefab;若是,对所述与所述目标类型对应的prefab进行实例化,得到第一对象实例;若否,从内存中创建与所述目标类型对应的prefab,并对创建得到的prefab进行实例化,得到第二对象实例。10.根据权利要求9所述的方法,其特征在于,所述确定所述场景对象所引用的各目标分类资源,包括:在通过缓存中的prefab实例化得到第一对象实例后,确定该第一对象实例所引用的各第一目标分类资源;在从内存中创建与所述目标类型对应的prefab,并对其进行实例化得到第二对象实例后,确定该创建的prefab所引用的各第二目标分类资源,以及该第二对象实例所引用的各第三目标分类资源。_11.根据权利要求10所述的方法,其特征在于,所述根据所述场景对象所引用的各目标分类资源,在创建所述场景对象后对所述各目标分类资源的引用量进行更新,包括:根据所述第一对象实例所引用的各第一目标分类资源,在创建所述第一对象实例后对各所述第一目标分类资源的引用量进行更新;根据创建的所述prefab所引用的各第二目标分类资源,在创建所述prefab后对各所述第二目标分类资源的引用量进行更新;根据所述第二对象实例所引用的各第三目标分类资源,在创建所述第二对象实例后对各所述第三目标分类资源的引用量进行更新。12.—种对象资源处理装置,其特征在于,包括:对象删除单元,用于在删除缓存中己创建的场景对象时,确定所述场景对象所引用的各目标分类资源;删除更新单元,用于根据所述场景对象所引用的各目标分类资源,在删除所述场景对象后对所述各目标分类资源的引用量进行更新,得到本次更新后的各目标分类资源的引用量;其中,目标分类资源的引用量在引用该目标分类资源的各场景对象创建和删除时进行更新;分类资源确定单元,用于根据本次更新后的各目标分类资源的引用量,确定引用量表示未被任何场景对象引用的目标分类资源;分类资源删除单元,用于将确定的未被任何场景对象引用的目标分类资源从内存中删除。13.—种对象资源处理装置,其特征在于,包括:对象创建单元,用于在确定需要创建目标类型的场景对象时,创建该目标类型的场景对象;引用分类资源确定单元,用于确定所述场景对象所引用的各目标分类资源;创建更新单元,用于根据所述场景对象所引用的各目标分类资源,在创建^述场景对象后对所述各目标分类资源的引用量进行更新;所述目标分类资源的引用量表示引用该目标分类资源的场景对象的数量。14.一种对象资源处理系统,其特征在于,包括如权利要求12的对象资源处理装置,以及如权利要求13的对象资源处理装置。

百度查询: 腾讯科技(深圳)有限公司 一种对象资源处理方法、装置及系统

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。