CN106708623B - 一种对象资源处理方法、装置及*** - Google Patents
一种对象资源处理方法、装置及*** Download PDFInfo
- Publication number
- CN106708623B CN106708623B CN201611041443.0A CN201611041443A CN106708623B CN 106708623 B CN106708623 B CN 106708623B CN 201611041443 A CN201611041443 A CN 201611041443A CN 106708623 B CN106708623 B CN 106708623B
- Authority
- CN
- China
- Prior art keywords
- resource
- target classification
- scene
- scene object
- classification resource
- 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
- 238000003672 processing method Methods 0.000 title claims abstract description 20
- 238000000034 method Methods 0.000 claims description 47
- 238000012545 processing Methods 0.000 claims description 21
- 238000000354 decomposition reaction Methods 0.000 claims description 9
- 238000012217 deletion Methods 0.000 claims description 8
- 230000037430 deletion Effects 0.000 claims description 8
- 238000004891 communication Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 239000000463 material Substances 0.000 description 5
- 230000003247 decreasing effect Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 235000017166 Bambusa arundinacea Nutrition 0.000 description 1
- 235000017491 Bambusa tulda Nutrition 0.000 description 1
- 241001330002 Bambuseae Species 0.000 description 1
- 235000015334 Phyllostachys viridis Nutrition 0.000 description 1
- 239000011425 bamboo Substances 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011022 operating instruction Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请公开了一种对象资源处理方法、装置及***,本申请在删除场景对象时,进一步分析其所引用的目标分类资源,在删除场景对象后对目标分类资源的引用量进行更新,根据更新后的目标分类资源的引用量,确定引用量表示未被任何场景对象引用的目标分类资源,进而将该目标分类资源从内存中删除,在保证了已创建的各场景对象正常运行的情况下,大大降低了内存的占用。
Description
技术领域
本申请涉及资源处理处理技术领域,更具体地说,涉及一种对象资源处理方法、装置及***。
背景技术
随着互联网的发展,各种类型的应用也如雨后春笋般出现,为用户提供了多样化的网络业务,如视频业务、游戏业务、网络直播业务等等,极大的丰富了用户的生活。
应用业务场景中,每产生一个新的场景对象都会调用各分类资源,以游戏业务为例,游戏场景中的角色的创建会调用动画控制器资源、模型网络资源、材质资源、纹理资源等。各分类资源可以同时被多个场景对象所调用,因此,在创建一个场景对象时,如果该场景对象所调用的分类资源已经加载入内存,则可以直接使用,否则,需要将对应的分类资源载入内存中。而在确定某一场景对象需要被删除时,为了避免该场景对象所调用的分类资源同时被其它场景对象所调用,现有技术仅仅将场景对象本身删除,并未删除场景对象所调用的分类资源。进而伴随着场景对象的产生,载入内存中的分类资源也越来越多,导致应用占用内存过高。
因此,现有技术亟需一种资源管理方案,以解决现有技术伴随场景对象的产生,内存占用过高的问题。
发明内容
有鉴于此,本申请提供了一种对象资源处理方法、装置及***,以解决现有技术随场景对象的产生,应用内存占用过高的问题。
为了实现上述目的,现提出的方案如下:
一种对象资源处理方法,包括:
在删除缓存中已创建的场景对象时,确定所述场景对象所引用的各目标分类资源;
根据所述场景对象所引用的各目标分类资源,在删除所述场景对象后对所述各目标分类资源的引用量进行更新,得到本次更新后的各目标分类资源的引用量;其中,目标分类资源的引用量在引用该目标分类资源的各场景对象创建和删除时进行更新;
根据本次更新后的各目标分类资源的引用量,确定引用量表示未被任何场景对象引用的目标分类资源;
将确定的未被任何场景对象引用的目标分类资源从内存中删除。
另一种对象资源处理方法,包括:
在确定需要创建目标类型的场景对象时,创建该目标类型的场景对象;
确定所述场景对象所引用的各目标分类资源;
根据所述场景对象所引用的各目标分类资源,在创建所述场景对象后对所述各目标分类资源的引用量进行更新;所述目标分类资源的引用量表示引用该目标分类资源的场景对象的数量。
一种对象资源处理装置,包括:
对象删除单元,用于在删除缓存中已创建的场景对象时,确定所述场景对象所引用的各目标分类资源;
删除更新单元,用于根据所述场景对象所引用的各目标分类资源,在删除所述场景对象后对所述各目标分类资源的引用量进行更新,得到本次更新后的各目标分类资源的引用量;其中,目标分类资源的引用量在引用该目标分类资源的各场景对象创建和删除时进行更新;
分类资源确定单元,用于根据本次更新后的各目标分类资源的引用量,确定引用量表示未被任何场景对象引用的目标分类资源;
分类资源删除单元,用于将确定的未被任何场景对象引用的目标分类资源从内存中删除。
另一种对象资源处理装置,包括:
对象创建单元,用于在确定需要创建目标类型的场景对象时,创建该目标类型的场景对象;
引用分类资源确定单元,用于确定所述场景对象所引用的各目标分类资源;
创建更新单元,用于根据所述场景对象所引用的各目标分类资源,在创建所述场景对象后对所述各目标分类资源的引用量进行更新;所述目标分类资源的引用量表示引用该目标分类资源的场景对象的数量。
一种对象资源处理***,其特征在于,包括上述示例的两种对象资源处理装置。
本申请实施例提供的对象资源处理方法,在删除缓存中已创建的场景对象时,确定所述场景对象所引用的各目标分类资源;根据所述场景对象所引用的各目标分类资源,在删除所述场景对象后对所述各目标分类资源的引用量进行更新,得到本次更新后的各目标分类资源的引用量;其中,目标分类资源的引用量在引用该目标分类资源的各场景对象创建和删除时进行更新;根据本次更新后的各目标分类资源的引用量,确定引用量表示未被任何场景对象引用的目标分类资源;将确定的未被任何场景对象引用的目标分类资源从内存中删除。由此可见,本申请在删除场景对象时,进一步分析其所引用的目标分类资源,在删除场景对象后对目标分类资源的引用量进行更新,根据更新后的目标分类资源的引用量,确定引用量表示未被任何场景对象引用的目标分类资源,进而将该目标分类资源从内存中删除,在保证了已创建的各场景对象正常运行的情况下,大大降低了内存的占用。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例公开的一种对象资源处理方法流程图;
图2为本申请示例的一种角色对象引用分类资源的示意图;
图3为本申请实施例公开的另一种对象资源处理方法流程图;
图4为本申请实施例公开的又一种对象资源处理方法流程图;
图5为本申请实施例公开的又一种对象资源处理方法流程图;
图6为本申请实施例公开的一种对象资源处理装置结构示意图;
图7为本申请实施例公开的另一种对象资源处理装置结构示意图;
图8为本申请实施例公开的一种终端设备硬件结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例公开了一种对象资源处理方案,应用于终端设备,终端设备。终端设备可以是手机、IPAD、电脑等可以运行应用客户端的设备。应用客户端所运行的业务场景中存在场景对象的创建和删除,本申请在删除场景对象时,进一步确定场景对象所引用的各目标分类资源,各目标分类资源对应设置有引用量,引用量能够在引用该目标分类资源的场景对象创建和删除时进行更新。进而,在确定目标分类资源的引用量表示该目标分类资源未被任何场景对象引用时,可以将该目标分类资源从内存中删除,降低应用内存占用。
接下来的实施例中,对本申请的对象资源处理方法进行详细介绍,参见图1所示,该方法包括:
步骤S100、在删除缓存中已创建的场景对象时,确定所述场景对象所引用的各目标分类资源;
这里首先对分类资源进行介绍。
根据应用的不同,应用内场景对象所引用的资源类型也不完全相同。本申请以一款游戏应用内角色所引用的资源进行说明,参见图2,其实例了一种角色对象的资源分解示意图。从图2可以看出,角色对象可以由Animator(动画组件)和SkinnedMeshRenderer(蒙皮网格渲染器)两种Component(组件)构成,两种组件分别可以分解为多个分类资源。其中,Animator可以分解为AnimatorController(动画控制器),而AnimatorController又可以进一步分解为AnimationClip(动画片段)和Avatar。SkinnedMeshRenderer可以分解为Mesh(模型网格)和Material(材质),其中Material又可以进一步分解为Texture(纹理)。
如图2示例的,其中虚线框包含的即是角色对象所引用的各分类资源。包括:AnimatorController、AnimationClip、Avatar、Mesh、Material、Texture分类资源。
当然,上述仅仅示例了一种角色对象的资源分解方式,针对其它场景对象也可以存在其它的资源分解方法。
本步骤中,在确定需要删除缓存中已创建的场景对象时,进一步确定该场景对象所引用的各分类资源,作为目标分类资源。
其中,确定需要删除缓存中已创建的场景对象的过程,可以是应用场景内存在角色退出当前场景界面时,确定需要将与该角色对应的场景对象进行缓存。进一步,判断缓存队列中是否已满,如果是,则确定需要从缓存队列中删除一个场景对象,以将与角色对应的场景对象存入缓存中。其中,缓存队列中需要删除的场景对象可以是按照先进先出原则确定的最早一个存入缓存队列的场景对象。
步骤S110、根据所述场景对象所引用的各目标分类资源,在删除所述场景对象后对所述各目标分类资源的引用量进行更新,得到本次更新后的各目标分类资源的引用量;
其中,目标分类资源的引用量在引用该目标分类资源的各场景对象创建和删除时进行更新。这里,引用该目标分类资源的各场景对象可以包括本步骤中删除的场景对象,也可以进一步包括其它引用该目标分类资源的各场景对象。
可以理解的是,若引用目标分类资源的场景对象删除,则对目标分类资源的引用量的更新方式为减少引用量,如将引用量减1;若引用目标分类资源的场景对象创建,则对目标分类资源的引用量的更新方式为增加引用量,如将引用量加1。
目标分类资源的初始引用量表示该目标分类资源未被任何场景对象引用,初始引用量可以设置为0,或者其它数值。
步骤S120、根据本次更新后的各目标分类资源的引用量,确定引用量表示未被任何场景对象引用的目标分类资源;
具体地,若本次更新后的目标分类资源的引用量表示未被任何场景对象引用,则该目标分类资源可以被删除。
其中,表示未被任何场景对象引用的引用量可以是初始引用量,即如果确定本次更新后的目标分类资源的引用量为初始引用量,则可以将该目标分类资源确定为删除对象。
步骤S130、将确定的未被任何场景对象引用的目标分类资源从内存中删除。
在确定出未被任何场景对象引用的目标分类资源之后,可以确定该目标分类资源的删除不会对现有的各场景对象的运行产生影响,因此为了降低内存占用,可以将该目标分类资源从内存中删除,也即从内存中卸载掉。
本申请实施例提供的对象资源处理方法,在删除缓存中已创建的场景对象时,确定所述场景对象所引用的各目标分类资源;根据所述场景对象所引用的各目标分类资源,在删除所述场景对象后对所述各目标分类资源的引用量进行更新,得到本次更新后的各目标分类资源的引用量;其中,目标分类资源的引用量在引用该目标分类资源的各场景对象创建和删除时进行更新;根据本次更新后的各目标分类资源的引用量,确定引用量表示未被任何场景对象引用的目标分类资源;将确定的未被任何场景对象引用的目标分类资源从内存中删除。由此可见,本申请在删除场景对象时,进一步分析其所引用的目标分类资源,在删除场景对象后对目标分类资源的引用量进行更新,根据更新后的目标分类资源的引用量,确定引用量表示未被任何场景对象引用的目标分类资源,进而将该目标分类资源从内存中删除,在保证了已创建的各场景对象正常运行的情况下,大大降低了内存的占用。
可选的,根据应用开发引擎的不同,创建的场景对象也不同。接下来以unity3D引擎开发的应用为例,对本申请方案进行详细介绍。
基于unity3D引擎所创建的场景对象包括对象实例以及预制件prefab,所述prefab用于在实例化后生成对象实例。
首先对prefab进行简要介绍:
在进行一些功能开发的时候,开发人员常常将一些能够复用的对象制作成预制件prefab。当某一场景内需要产生一对象实例时,可以通过对prefab进行实例化,得到对象实例。其中,一个prefab能够实例化得到一种类型的对象实例,当然,根据场景不同,可以对prefab实例化后得到的对象实例的属性进行调整。
对于prefab及对象实例,都会引用分类资源。
接下来参见图3,图3中以unity3D引擎开发的应用为例,对本申请的对象资源处理方法进行介绍,如图3所示,该方法包括:
步骤S300、在删除缓存中已创建的对象实例时,确定所述对象实例所引用的各分类资源,作为第一目标分类资源;
具体地,删除对象实例的时机可以是,应用场景中存在角色退出视野,需要将该角色对应的对象实例添加如缓存,而此时缓存队列已满,则需要从缓存队列中删除一对象实例。
对象实例所引用的分类资源可以参照图2示例的情况,将对象实例所引用的各分类资源作为第一目标分类资源。
步骤S310、根据所述对象实例所引用的各第一目标分类资源,在删除所述对象实例后对各第一目标分类资源的引用量进行更新,得到本次更新后的各第一目标分类资源的引用量;
步骤S320、确定实例化生成所述对象实例的prefab是否需要删除;若是,执行步骤S330;
其中,所述prefab用于在其实例化后得到的各对象实例均删除后进行删除。
一个prefab可以实例化得到多个对象实例,只有在prefab实例化得到的各对象实例均删除后,该prefab才可以删除。因此,本步骤中确定实例化生成所述对象实例的prefab是否需要删除的过程,可以包括:
确定该prefab实例化生成的各对象实例是否均删除完毕,如果是,则确定该prefab需要删除。
步骤S330、删除所述prefab,并确定所述prefab所引用的各分类资源,作为第二目标分类资源;
具体地,在确定prefab需要删除时,将其从内存中删除。并确定该prefab所引用的各分类资源,作为第二目标分类资源。
可以理解的是,第二目标分类资源与第一目标分类资源可以全部或部分相同,也可以完全不同。
步骤S340、根据prefab所引用的各第二目标分类资源,在删除所述prefab后对各第二目标分类资源的引用量进行更新,得到本次更新后的各第二目标分类资源的引用量;
本步骤中,在删除prefab后,对其所引用的各第二目标分类资源的引用量进行更新,该更新方式为减小更新,如对各第二目标分类资源的引用量减1。当然,每次更新时增加和减少的数值需要相同,如均以1为单位。
步骤S350、根据本次更新后的各第二目标分类资源的引用量,确定引用量表示未被任何对象实例及prefab引用的第二目标分类资源;
具体地,分类资源的更新时机为引用该分类资源的对象实例创建和删除时,以及引用该分类资源的prefab创建和删除时。由于prefab只有在其实例化得到的各对象实例全部删除后才能够删除,因此本申请可以在删除prefab,并对prefab所引用的各第二目标分类资源的引用量进行更新后,根据更新后各第二目标分类资源的引用量,确定引用量表示未被任何对象实例及prefab引用的第二目标分类资源。
步骤S360、调用unity3D引擎提供的删除方法,将确定的未被任何场景对象引用的目标分类资源从内存中删除。
其中,unity3D引擎提供的删除方法可以包括Resources.UnloadAsset()方法。
本申请的方法适用于MMORPG(Massive Multiplayer Online Role-PlayingGame,大型多人在线角色扮演游戏)应用,同一屏幕中大量角色进出视野,可以在不断加载新资源的同时,卸载掉不用的资源,降低了内存消耗,且不会影响游戏的稳定性。
仍参见图2示例的角色对象的分类资源分解方式,各分类资源包括:AnimatorController、AnimationClip、Avatar、Mesh、Material、Texture分类资源。
其中,对于AnimatorController、Avatar、Mesh、Material,unity3D引擎均提供了直接获取的接口,而unity3D引擎并未直接提供对AnimationClip和Texture的获取接口。
基于此,本实施例中可以将AnimatorController转换为AnimatorOverrideController,进而可以利用unity3D引擎提供的对AnimatorOverrideController的获取接口,通过该接口获取AnimationClip。
进一步,unity3D引擎并未提供遍历获取所有Texture的接口,只提供了通过纹理标识获取对应Texture的接口。为此,本申请设计了获取对象实例在Texture分类资源中所引用的目标Texture的方法,该方法可以包括:
S1、确定所述对象实例创建过程所使用的着色器Shader;
S2、获取与所述Shader对应的纹理名单,所述纹理名单包括对应的Shader在创建所述对象实例时所使用的各纹理的标识;
具体地,本申请可以将Shader在创建对象实例时所使用的各纹理的标识导出成xml文件。
S3、通过unity3D引擎所提供的纹理获取接口,输入所述纹理名单中各纹理的标识,以得到unity3D引擎返回的与各标识对应的目标纹理Texture。
与上述各实施例对应的,本申请实施例进一步介绍了有一种对象资源处理方法,该方法介绍了创建场景对象的过程,该过程中包括对场景对象所引用的分类资源的引用量的更新过程,参见图4所示,该方法包括:
步骤S400、在确定需要创建目标类型的场景对象时,创建该目标类型的场景对象;
具体地,当存在角色进入当前场景界面时,可以确定需要创建与该角色对应的目标类型的场景对象。
步骤S410、确定所述场景对象所引用的各目标分类资源;
具体地,在创建场景对象之后,确定该场景对象所引用的各目标分类资源。其中,对象的分类资源的分解方式可以参照图2示例的情况。
步骤S420、根据所述场景对象所引用的各目标分类资源,在创建所述场景对象后对所述各目标分类资源的引用量进行更新。
其中,所述目标分类资源的引用量表示引用该目标分类资源的场景对象的数量。
可以理解的是,这里在创建场景对象后,对场景对应所引用的各目标分类资源的引用量的更新方式可以是,增加引用量数值,如对引用量加1。当然,这里引用量每次增加数值需要与前述实施例中引用量每次减少数值相同,如设置引用目标分类资源的场景对象创建时,对该目标分类资源的引用量加1,引用目标分类资源的场景对象删除时,对该目标分类资源的引用量减1。目标分类资源初始引用量可以设置为0。
按照本申请实施例提供的对象资源处理方法,在创建场景对象时,进一步分析场景对象所引用的各目标分类资源,并在创建所述场景对象后对所述各目标分类资源的引用量进行更新,同时,目标分类资源的引用量还用于在引用该目标分类资源的场景对象删除时进行更新,便于在确定某一目标分类资源的引用量表示未被任何场景对象引用时,可以将该目标分类资源从内存中删除,减少内存占用。
接下来的实施例中,以unity3D引擎开发的应用为例,对本申请方案进行详细介绍。
基于unity3D引擎所创建的场景对象包括对象实例以及预制件prefab,所述prefab用于在实例化后生成对象实例。
参见图5,图5中以unity3D引擎开发的应用为例,对本申请的对象资源处理方法进行介绍,如图5所示,该方法包括:
步骤S500、在确定需要创建目标类型的场景对象时,确定缓存中是否存在与所述目标类型对应的prefab;若是,执行步骤S510,若否,执行步骤S540;
步骤S510、对所述与所述目标类型对应的prefab进行实例化,得到第一对象实例;
步骤S520、确定该第一对象实例所引用的各第一目标分类资源;
步骤S530、根据所述第一对象实例所引用的各第一目标分类资源,对各所述第一目标分类资源的引用量进行更新;
具体地,在创建所述第一对象实例后对各所述第一目标分类资源的引用量进行更新。
步骤S540、从内存中创建与所述目标类型对应的prefab,并对创建得到的prefab进行实例化,得到第二对象实例;
步骤S550、确定该创建的prefab所引用的各第二目标分类资源,以及该第二对象实例所引用的各第三目标分类资源;
步骤S560、根据创建的所述prefab所引用的各第二目标分类资源,在创建所述prefab后对各所述第二目标分类资源的引用量进行更新;
步骤S570、根据所述第二对象实例所引用的各第三目标分类资源,在创建所述第二对象实例后对各所述第三目标分类资源的引用量进行更新。
其中,第一目标分类资源、第二目标分类资源和第三目标分类资源仅仅是便于表述,并无本质上的区别,三者可以完全或部分相同,也可以完全不相同。
根据上述实施例可以确定,分类资源的引用量以增加方式进行更新的时机可以包括:
引用该分类资源的prefab创建时、引用该分类资源的对象实例创建时(该过程包括,以缓存的prefab进行实例化创建对象实例,以及以新创建的prefab进行实例化创建对象实例)。
综上所述:
每当一个prefab创建时,需要对其引用的各目标分类资源以增加方式进行更新;每当一个对象实例创建时需要对其引用的各目标分类资源以增加方式进行更新。其中,增加方式更新可以包括引用量加1。
每当一个对象实例删除时,需要对其引用的各目标分类资源的引用量以减少方式进行式更新;每当一个prefab删除时,需要对其引用的各目标分类资源的引用量以减少方式进行式更新。其中,减少方式更新可以包括引用量减1。
在prefab删除时,根据更新后所述prefab引用的各目标分类资源的引用量,从中确定引用量表示未被任何prefab和对象实例引用的目标分类资源,将其从内存中删除。
下面对本申请实施例提供的对象资源处理装置进行描述,下文描述的对象资源处理装置与上文描述的对象资源处理方法可相互对应参照。
本申请实施例公开了对象资源处理装置的两种不同结构,分别如图6和图7所示,分别介绍如下:
第一种结构,如图6所示,对象资源处理装置包括:
对象删除单元11,用于在删除缓存中已创建的场景对象时,确定所述场景对象所引用的各目标分类资源;
删除更新单元12,用于根据所述场景对象所引用的各目标分类资源,在删除所述场景对象后对所述各目标分类资源的引用量进行更新,得到本次更新后的各目标分类资源的引用量;其中,目标分类资源的引用量在引用该目标分类资源的各场景对象创建和删除时进行更新;
分类资源确定单元13,用于根据本次更新后的各目标分类资源的引用量,确定引用量表示未被任何场景对象引用的目标分类资源;
分类资源删除单元14,用于将确定的未被任何场景对象引用的目标分类资源从内存中删除。
可选的,所述场景对象可以是基于unity3D引擎所创建;所述场景对象包括对象实例以及预制件prefab,所述prefab用于在实例化后生成对象实例。基于此,对象删除单元确定所述场景对象所引用的各目标分类资源的过程,具体可以包括:
在删除缓存中已创建的对象实例时,确定所述对象实例所引用的各分类资源,作为第一目标分类资源;
确定删除所述对象实例后,实例化生成所述对象实例的prefab是否需要删除;其中,所述prefab用于在其实例化后得到的各对象实例均删除后进行删除;
若是,删除所述prefab,并确定所述prefab所引用的各分类资源,作为第二目标分类资源。
可选的,删除更新单元在删除所述场景对象后对所述各目标分类资源的引用量进行更新的过程,具体可以包括:
根据所述对象实例所引用的各第一目标分类资源,在删除所述对象实例后对各第一目标分类资源的引用量进行更新,得到本次更新后的各第一目标分类资源的引用量;
根据prefab所引用的各第二目标分类资源,在删除所述prefab后对各第二目标分类资源的引用量进行更新,得到本次更新后的各第二目标分类资源的引用量。
可选的,分类资源确定单元根据本次更新后的各目标分类资源的引用量,确定引用量表示未被任何场景对象引用的目标分类资源的过程,具体可以包括:
根据本次更新后的各第二目标分类资源的引用量,确定引用量表示未被任何对象实例及prefab引用的第二目标分类资源。
可选的,分类资源删除单元将确定的未被任何场景对象引用的目标分类资源从内存中删除的过程,具体可以包括:
调用unity3D引擎提供的Resources.UnloadAsset()方法,将确定的未被任何场景对象引用的目标分类资源从内存中删除。
可选的,所述分类资源可以包括纹理Texture分类资源。则对象删除单元确定对象实例在Texture分类资源中所引用的目标Texture的过程,具体可以包括:
确定所述对象实例创建过程所使用的着色器Shader;
获取与所述Shader对应的纹理名单,所述纹理名单包括对应的Shader在创建所述对象实例时所使用的各纹理的标识;
通过unity3D引擎所提供的纹理获取接口,输入所述纹理名单中各纹理的标识,以得到unity3D引擎返回的与各标识对应的目标纹理Texture。
可选的,本申请的装置还可以包括:
缓存确定单元,用于在确定应用场景内存在角色退出当前场景界面时,确定需要将与所述角色对应的场景对象进行缓存;
队列状态判断单元,用于判断缓存队列是否已满;若是,从所述缓存队列中确定一场景对象进行删除,以将与所述角色对应的场景对象存入缓存队列中,并执行所述对象删除单元。
第二种结构,如图7所示,对象资源处理装置包括:
对象创建单元21,用于在确定需要创建目标类型的场景对象时,创建该目标类型的场景对象;
引用分类资源确定单元22,用于确定所述场景对象所引用的各目标分类资源;
创建更新单元23,用于根据所述场景对象所引用的各目标分类资源,在创建所述场景对象后对所述各目标分类资源的引用量进行更新;所述目标分类资源的引用量表示引用该目标分类资源的场景对象的数量。
可选的,所述场景对象可以是基于unity3D引擎所创建;所述场景对象包括对象实例以及预制件prefab,所述prefab用于在实例化后生成对象实例。基于此,对象创建单元创建该目标类型的场景对象的过程,可以包括:
确定缓存中是否存在与所述目标类型对应的prefab;
若是,对所述与所述目标类型对应的prefab进行实例化,得到第一对象实例;
若否,从内存中创建与所述目标类型对应的prefab,并对创建得到的prefab进行实例化,得到第二对象实例。
可选的,引用分类资源确定单元确定所述场景对象所引用的各目标分类资源的过程,具体可以包括:
在通过缓存中的prefab实例化得到第一对象实例后,确定该第一对象实例所引用的各第一目标分类资源;
在从内存中创建与所述目标类型对应的prefab,并对其进行实例化得到第二对象实例后,确定该创建的prefab所引用的各第二目标分类资源,以及该第二对象实例所引用的各第三目标分类资源。
可选的,创建更新单元根据所述场景对象所引用的各目标分类资源,在创建所述场景对象后对所述各目标分类资源的引用量进行更新的过程,具体可以包括:
根据所述第一对象实例所引用的各第一目标分类资源,在创建所述第一对象实例后对各所述第一目标分类资源的引用量进行更新;
根据创建的所述prefab所引用的各第二目标分类资源,在创建所述prefab后对各所述第二目标分类资源的引用量进行更新;
根据所述第二对象实例所引用的各第三目标分类资源,在创建所述第二对象实例后对各所述第三目标分类资源的引用量进行更新。
接下来的实施例中,对实现本申请的项目数据处理装置的终端设备的硬件结构进行介绍,参见图8,图8为本申请实施例提供的一种终端设备硬件结构示意图。
如图8所示,服务器可以包括:
处理器1,通信接口2,存储器3,通信总线4,和显示屏5;
其中处理器1、通信接口2、存储器3和显示屏5通过通信总线4完成相互间的通信;
可选的,通信接口2可以为通信模块的接口,如GSM模块的接口;
处理器1,用于执行程序;
存储器3,用于存放程序;
程序可以包括程序代码,所述程序代码包括处理器的操作指令。
处理器1可能是一个中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本申请实施例的一个或多个集成电路。
存储器3可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。
其中,程序具体用于:
在删除缓存中已创建的场景对象时,确定所述场景对象所引用的各目标分类资源;
根据所述场景对象所引用的各目标分类资源,在删除所述场景对象后对所述各目标分类资源的引用量进行更新,得到本次更新后的各目标分类资源的引用量;其中,目标分类资源的引用量在引用该目标分类资源的各场景对象创建和删除时进行更新;
根据本次更新后的各目标分类资源的引用量,确定引用量表示未被任何场景对象引用的目标分类资源;
将确定的未被任何场景对象引用的目标分类资源从内存中删除。
或者,
在确定需要创建目标类型的场景对象时,创建该目标类型的场景对象;
确定所述场景对象所引用的各目标分类资源;
根据所述场景对象所引用的各目标分类资源,在创建所述场景对象后对所述各目标分类资源的引用量进行更新;所述目标分类资源的引用量表示引用该目标分类资源的场景对象的数量。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (14)
1.一种对象资源处理方法,其特征在于,包括:
在确定应用场景内存在角色退出当前场景界面时,确定需要将与所述角色对应的场景对象进行缓存;
判断缓存队列是否已满;
若是,从所述缓存队列中确定一场景对象进行删除,以将与所述角色对应的场景对象存入缓存队列中,在删除缓存中已创建的场景对象时,确定所述场景对象所引用的各目标分类资源,其中,缓存队列中需要删除的场景对象是按照先进先出原则确定的最早一个存入缓存队列的场景对象;所述场景对象所引用的各目标分类资源,是通过对应用内场景对象进行资源分解后确定出来的;
根据所述场景对象所引用的各目标分类资源,在删除所述场景对象后对所述各目标分类资源的引用量进行更新,得到本次更新后的各目标分类资源的引用量;其中,目标分类资源的引用量在引用该目标分类资源的各场景对象创建和删除时进行更新;
根据本次更新后的各目标分类资源的引用量,确定引用量表示未被任何场景对象引用的目标分类资源;
将确定的未被任何场景对象引用的目标分类资源从内存中删除。
2.根据权利要求1所述的方法,其特征在于,所述场景对象为基于unity3D引擎所创建;所述场景对象包括对象实例以及预制件prefab,所述prefab用于在实例化后生成对象实例;
所述在删除缓存中已创建的场景对象时,确定所述场景对象所引用的各目标分类资源,包括:
在删除缓存中已创建的对象实例时,确定所述对象实例所引用的各分类资源,作为第一目标分类资源;
确定删除所述对象实例后,实例化生成所述对象实例的prefab是否需要删除;其中,所述prefab用于在其实例化后得到的各对象实例均删除后进行删除;
若是,删除所述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.一种对象资源处理方法,其特征在于,包括:
当存在角色进入当前场景界面时,确定需要创建目标类型的场景对象,创建该目标类型的场景对象;
确定所述场景对象所引用的各目标分类资源,所述场景对象所引用的各目标分类资源,是通过对应用内场景对象进行资源分解后确定出来的;
根据所述场景对象所引用的各目标分类资源,在创建所述场景对象后对所述各目标分类资源的引用量进行更新;所述目标分类资源的引用量表示引用该目标分类资源的场景对象的数量;
所述目标分类资源的引用量还用于,在引用所述目标分类资源的场景对象被删除时进行更新,以便于确定出引用量表示未被任何场景对象引用的目标分类资源,并将确定的未被任何场景对象引用的目标分类资源从内存中删除。
8.根据权利要求7所述的方法,其特征在于,所述场景对象为基于unity3D引擎所创建;所述场景对象包括对象实例以及预制件prefab,所述prefab用于在实例化后生成对象实例;
所述创建该目标类型的场景对象,包括:
确定缓存中是否存在与所述目标类型对应的prefab;
若是,对所述与所述目标类型对应的prefab进行实例化,得到第一对象实例;
若否,从内存中创建与所述目标类型对应的prefab,并对创建得到的prefab进行实例化,得到第二对象实例。
9.根据权利要求8所述的方法,其特征在于,所述确定所述场景对象所引用的各目标分类资源,包括:
在通过缓存中的prefab实例化得到第一对象实例后,确定该第一对象实例所引用的各第一目标分类资源;
在从内存中创建与所述目标类型对应的prefab,并对其进行实例化得到第二对象实例后,确定该创建的prefab所引用的各第二目标分类资源,以及该第二对象实例所引用的各第三目标分类资源。
10.根据权利要求9所述的方法,其特征在于,所述根据所述场景对象所引用的各目标分类资源,在创建所述场景对象后对所述各目标分类资源的引用量进行更新,包括:
根据所述第一对象实例所引用的各第一目标分类资源,在创建所述第一对象实例后对各所述第一目标分类资源的引用量进行更新;
根据创建的所述prefab所引用的各第二目标分类资源,在创建所述prefab后对各所述第二目标分类资源的引用量进行更新;
根据所述第二对象实例所引用的各第三目标分类资源,在创建所述第二对象实例后对各所述第三目标分类资源的引用量进行更新。
11.一种对象资源处理装置,其特征在于,包括:
对象删除单元,用于在确定应用场景内存在角色退出当前场景界面时,确定需要将与所述角色对应的场景对象进行缓存;判断缓存队列是否已满;若是,从所述缓存队列中确定一场景对象进行删除,以将与所述角色对应的场景对象存入缓存队列中,在删除缓存中已创建的场景对象时,确定所述场景对象所引用的各目标分类资源,其中,缓存队列中需要删除的场景对象是按照先进先出原则确定的最早一个存入缓存队列的场景对象;
删除更新单元,用于根据所述场景对象所引用的各目标分类资源,所述场景对象所引用的各目标分类资源,是通过对应用内场景对象进行资源分解后确定出来的;在删除所述场景对象后对所述各目标分类资源的引用量进行更新,得到本次更新后的各目标分类资源的引用量;其中,目标分类资源的引用量在引用该目标分类资源的各场景对象创建和删除时进行更新;
分类资源确定单元,用于根据本次更新后的各目标分类资源的引用量,确定引用量表示未被任何场景对象引用的目标分类资源;
分类资源删除单元,用于将确定的未被任何场景对象引用的目标分类资源从内存中删除。
12.一种对象资源处理装置,其特征在于,包括:
对象创建单元,用于当存在角色进入当前场景界面时,确定需要创建目标类型的场景对象,创建该目标类型的场景对象;
引用分类资源确定单元,用于确定所述场景对象所引用的各目标分类资源,所述场景对象所引用的各目标分类资源,是通过对应用内场景对象进行资源分解后确定出来的;
创建更新单元,用于根据所述场景对象所引用的各目标分类资源,在创建所述场景对象后对所述各目标分类资源的引用量进行更新;所述目标分类资源的引用量表示引用该目标分类资源的场景对象的数量;
所述目标分类资源的引用量还用于,在引用所述目标分类资源的场景对象被删除时进行更新,以便于确定出引用量表示未被任何场景对象引用的目标分类资源,并将确定的未被任何场景对象引用的目标分类资源从内存中删除。
13.一种对象资源处理***,其特征在于,包括如权利要求11的对象资源处理装置,以及如权利要求12的对象资源处理装置。
14.一种存储器,其特征在于,用于存放程序,所述程序以执行如权利要求1-6或者7-10任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611041443.0A CN106708623B (zh) | 2016-11-23 | 2016-11-23 | 一种对象资源处理方法、装置及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611041443.0A CN106708623B (zh) | 2016-11-23 | 2016-11-23 | 一种对象资源处理方法、装置及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106708623A CN106708623A (zh) | 2017-05-24 |
CN106708623B true CN106708623B (zh) | 2021-04-27 |
Family
ID=58933839
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611041443.0A Active CN106708623B (zh) | 2016-11-23 | 2016-11-23 | 一种对象资源处理方法、装置及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106708623B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107766155A (zh) * | 2017-10-23 | 2018-03-06 | 北京京东尚科信息技术有限公司 | 对象处理方法及*** |
CN108304178B (zh) * | 2018-01-17 | 2021-03-30 | 珠海金山网络游戏科技有限公司 | 一种基于Unity3D的数据集引用方法及*** |
CN108786112B (zh) * | 2018-04-26 | 2024-03-12 | 腾讯科技(上海)有限公司 | 一种应用场景配置方法、装置和存储介质 |
WO2021155529A1 (zh) * | 2020-02-06 | 2021-08-12 | Oppo广东移动通信有限公司 | 资源删除方法、装置、设备及存储介质 |
CN114528043B (zh) * | 2022-02-11 | 2023-07-14 | 腾讯科技(深圳)有限公司 | 文件加载方法、装置、设备及计算机可读存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1710607A (zh) * | 2005-07-08 | 2005-12-21 | 北京航空航天大学 | 一种面向虚拟现实三维图形引擎的三维场景组织方法 |
CN102214263A (zh) * | 2010-04-12 | 2011-10-12 | 无锡科利德斯科技有限公司 | 游戏场景管理方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1997006512A2 (en) * | 1995-08-04 | 1997-02-20 | Microsoft Corporation | Method and system for rendering graphical objects to image chunks and combining image layers into a display image |
CN100468346C (zh) * | 2007-03-30 | 2009-03-11 | 腾讯科技(深圳)有限公司 | 一种绘图资源的管理方法及*** |
CN104461661A (zh) * | 2014-12-30 | 2015-03-25 | 中科创达软件股份有限公司 | 一种图片资源加载方法及*** |
CN105354049B (zh) * | 2015-09-29 | 2019-03-08 | 北京畅游天下网络技术有限公司 | 一种三维动画引擎的资源加载方法、装置及*** |
CN105224323A (zh) * | 2015-09-29 | 2016-01-06 | 北京畅游天下网络技术有限公司 | 一种三维动画引擎的资源打包方法及装置 |
CN105183566B (zh) * | 2015-10-16 | 2019-01-29 | 上海恺英网络科技有限公司 | 3d游戏渲染引擎的资源管理方法 |
-
2016
- 2016-11-23 CN CN201611041443.0A patent/CN106708623B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1710607A (zh) * | 2005-07-08 | 2005-12-21 | 北京航空航天大学 | 一种面向虚拟现实三维图形引擎的三维场景组织方法 |
CN102214263A (zh) * | 2010-04-12 | 2011-10-12 | 无锡科利德斯科技有限公司 | 游戏场景管理方法 |
Non-Patent Citations (1)
Title |
---|
Unity资源管理汇总;yh1984;《https://blog.51cto.com/makeanything/1734320》;20160112;第1-8页 * |
Also Published As
Publication number | Publication date |
---|---|
CN106708623A (zh) | 2017-05-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106708623B (zh) | 一种对象资源处理方法、装置及*** | |
CN109462769B (zh) | 直播间挂件显示方法、装置、终端及计算机可读介质 | |
CN106846040A (zh) | 一种直播间中虚拟礼物显示方法和*** | |
CN112068923B (zh) | 界面更新方法和装置 | |
CN111898037B (zh) | 排行榜数据的更新方法、装置及服务器 | |
CN112114849B (zh) | 一种资源更新方法和装置 | |
CN109361948B (zh) | 界面管理方法、智能终端及可读存储介质 | |
CN107526623B (zh) | 一种数据处理方法及装置 | |
CN110716848A (zh) | 数据收集方法、装置、电子设备及存储介质 | |
CN109582904B (zh) | 已发布内容的修改方法、装置、服务器、终端及存储介质 | |
CA2916896C (en) | Method and apparatus for automating network data analysis of user's activities | |
CN111068305A (zh) | 云游戏加载控制方法、装置、电子设备及存储介质 | |
CN104572771B (zh) | 处理状态展示方法及装置 | |
CN105095004A (zh) | 一种信息处理方法和电子设备 | |
CN112044061B (zh) | 游戏画面处理方法、装置、电子设备以及存储介质 | |
CN110853122A (zh) | 动画生成方法、装置及存储介质 | |
CN106775889B (zh) | 利用对象池实现Flash播放器资源加载的方法及*** | |
CN115643468A (zh) | 海报生成方法、装置、电子设备及存储介质 | |
CN111773679B (zh) | 游戏中图标的处理方法及装置 | |
CN114117178A (zh) | 信息处理方法、装置和电子设备 | |
CN113742581A (zh) | 榜单的生成方法、装置、电子设备及可读存储介质 | |
CN111367990B (zh) | 一种列表展示方法及装置 | |
CN107391590B (zh) | 一种主题列表的更新方法、装置、电子设备及存储介质 | |
CN117115308A (zh) | 动画导出方法、装置、电子设备和计算机可读存储介质 | |
CN111009025B (zh) | 骨骼动画的隐藏方法、装置及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |