一种共享资源方法与流程

文档序号:22468580发布日期:2020-10-09 21:54阅读:440来源:国知局
一种共享资源方法与流程

本发明涉及信息技术领域,更具体地,涉及一种共享资源方法。



背景技术:

在当今各种类型的游戏运行的过程中,都会涉及大量的资源加载需要。在大多数的情况下,资源的需求都是动态而非固定情况下发生,导致游戏程序频繁的加载增加资源去满足画面显示的需要,同时也就增加了对游戏运行的效率影响。如果游戏采用世界地图的话,除了大量的资源加载负担外,还会有很高的渲染负担,例如同屏幕的资源数量很高。现有的技术方案是利用所用游戏引擎提供的资源预制体机制,经过美术手段准备好资源组合预制体,再结合技术手段去建立游戏运行时的资源池,以最大程度提高资源复用率,也减少资源被反复生成的目的。

现有的预制体经常由多个部分组成,而资源池在对预制体回收时,地图可能仍然要展示与预制体的其中一部分相同的模型,但此时由于预制体被完全回收,导致该部分无法被利用,除非预制体再次被重新加载到地图中。典型的现有技术如专利申请(申请号:201811359443.4,发明名称:一种预制体开发方法、装置、设备及介质)所记载,将美术资源组合为目标预制体后,按类型将预制体存储至相应的存储路径下,在调用时直接根据预制体类型在存储路径下获取预制体,不对已读取的资源进行重复利用,导致资源利用率不高。

在专利申请(申请号:201710777986.7,发明名称:一种超大地图场景资源的存储方法及存储装置)中,通过获取地图场景资源和将其分类,并以地图索引筛查出被调用的地图场景预制体,并将它们进行保存。该专利申请同样是根据分类进行预制体的存储和读取,在存储方面进行优化,而运行时仍然采用一般的按需读取方式。

现有的技术方案还利用多层次细节(levelofdetail)技术,当玩家视角对应的摄像机距离地图较远时,采用低精度的版本渲染资源,反之则采用精度高的版本渲染资源,以此去降低同屏幕需要渲染的顶点数量。如果多层次细节技术直接与预制体机制搭配使用,则要在预制体组合里,增加在不同层级上应该要显示的模型版本,然后通过游戏引擎提供的多层次细节组件控制实现。这会增加预制体的文件大小、读取时间及内存占用,而且引入的控制组件也会增加实时性能上的负担。



技术实现要素:

本发明为克服上述现有技术所述的缺陷,提高预制体的资源利用率,降低多层次细节技术带来的性能负担,提供一种将资源利用率最大化的共享资源方法。

为解决上述技术问题,本发明的技术方案如下:

一种共享资源方法,包括以下步骤:

s1.获取资源组合预制体,导出资源组合预制体中的原预制体的信息;

s2.向资源池发送需要显示原预制体的申请以及原预制体的信息;

s3.资源池通过判断资源池内是否已有所述步骤s2的原预制体对应的资源组合预制体以及所述资源组合预制体的空闲状况,如果存在空闲的原预制体对应的资源组合预制体,则返回原预制体对应的资源,否则加载资源组合预制体,然后创建并返回原预制体对应的资源;

s4.显示原预制体,原预制体在显示结束后由资源池进行回收,终止原预制体的异步加载。

上述方法的原理为:首先重组资源组合预制体的相关数据至每个原预制体的信息;游戏在进行时,尤其是最初加载和用户移动视角时,需要加载新的原预制体,因此向资源池发出相关的需求申请;资源池首先判断其中有无可供使用的资源组合预制体,用于直接向游戏的上层应用返回资源组合预制体,否则进行新的加载,然后根据设定的流程创建原预制体以供显示;原预制体在显示完成后,即可由资源池回收至资源组合预制体,该操作可被通知至游戏程序的其他部分,尤其是终止正在进行的、原预制体对应的加载。

进一步地,所述原预制体的信息包括网格、材质、贴图、预制组合内的位置、旋转角度和尺寸。

进一步地,所述资源池在加载资源组合预制体时,如果资源组合预制体中存在已加载的原预制体,则仅加载指向已加载的原预制体的索引。

进一步地,所述步骤s3中显示创建原预制体对应的资源的具体过程如下:

向资源池申请空闲模型,根据先前加载的资源组合预制体以及预制组合内的位置、旋转角度和尺寸信息,在空闲模型上创建原预制体。

进一步地,所述步骤s4中显示结束的判断条件是:如果原预制体显示超出预设时间并且原预制体没有被通过索引而引用显示在其他地方,则原预制体被认定为显示结束。

进一步地,在所述步骤s3中创建并返回原预制体对应的资源后,终止原预制体对应的异步加载。

进一步地,在终止原预制体对应的异步加载之前,检测是否存在相同的原预制体正在进行的异步加载、或者是否存在基于需要显示相同的原制体申请而进行的、没有其他原预制体显示需求的资源组合预制体的异步加载,如果是,则终止异步加载

进一步地,终止异步加载是强制终止正在进行的异步加载的进程。

进一步地,原预制体的信息还包括多层次细节信息,其中,所述多层次细节信息以索引的方式包括每个层次所展示的模型资源信息,所述层次是摄像头与地表之间的距离的范围。

进一步地,当原预制体被加载时,根据摄像机与地表之间的距离判断当前所处的层次,根据与层次对应的模型资源信息加载模型;

当摄像机相对于地表而移动时,如果摄像机与地表之间的距离超过先前所处的层次,则归还先前的模型至资源池,根据与当前所处的层次对应的模型资源信息加载模型。

进一步地,被归还到资源池的模型分配到不被渲染的渲染层,用于避免触发代码逻辑组件、动画组件和粒子组件。

进一步地,所述原预制体的信息和资源组合预制体的信息采用json数据格式。

与现有技术相比,本发明技术方案的有益效果是:

本发明利用含有预制体的资源组合预制体,首先导出预制体本身以及在资源组合预制体中的相关信息,在需要显示时,向资源池发出申请,资源池可优先从其中查看是否有空闲的预制体并返回,避免重复读取资源组合预制体,使得资源利用率最大化;另一方面,在资源利用率最大化的前提下,通过索引的方式记录原预制体在多层次细节下与各个距离对应的模型,并且使得暂时不需使用的模型避免消耗cpu算力,降低性能成本。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为共享资源方法的流程示意图。

具体实施方式

附图仅用于示例性说明,不能理解为对本专利的限制;

对于本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。

下面结合附图和实施例对本发明的技术方案做进一步的说明。

一种共享资源方法,如图1所示,首先获取资源组合预制体,导出资源组合预制体中的原预制体的信息,其中原预制体的信息包括网格、材质、贴图、预制组合内的位置、旋转角度和尺寸。

以基于unity3d的游戏为例,当游戏需要显示原预制体时,创建以sharedasset(共享资源)为基类的资源池管理器,游戏的上层应用通过创建以recycleunit(回收单元)为基类的物件实现资源显示的需要,其中,基类recycleunit(回收单元)提供对外功能方法如reuse(复用)、recycle(回收)、transform(总体位置角度大小编辑)。

基类recycleunit(回收单元)内部地向资源池发送需要显示的、以sharedasset(共享资源)为基类的原预制体的申请以及原预制体的信息,或者归还不需要显示的、以sharedasset(共享资源)为基类的原预制体。

资源池在接受需要显示原预制体的申请后,首先判断资源池内是否已有在先前游戏进程中已归还的、原预制体对应的资源组合预制体以及其空闲状况,如果该资源组合预制体可以使用,则返回原预制体;否则加载资源组合预制体,然后向资源池申请空闲模型,根据先前加载的资源组合预制体以及预制组合内的位置、旋转角度和尺寸信息,在空闲模型上创建以sharedasset(共享资源)为基类的新原预制体;其中,如果资源组合预制体中存在已加载的原预制体,则仅加载指向已加载的原预制体的索引。

具体的,以sharedasset(共享资源)为基类的原预制体还至少提供以下功能:1.创建后自动添加到tbjobsystem(工作队列器)并加入到异步加载原预制体自身的资源的队列;2.在原预制体自身的资源加载完成后终止异步加载队列中创建或等待的工作指令,根据自身被游戏所需要的情况设置显示状态并进入渲染过程。

原预制体在渲染过程完成后进行显示。原预制体在显示结束后由资源池进行回收,如果在回收时检测到相同的原预制体正在异步加载或基于需要显示相同的原制体申请而进行的、没有其他原预制体显示需求的资源组合预制体的异步加载,则强制终止正在进行的异步加载的进程。具体的,显示结束的判断条件是:如果原预制体显示超出预设时间并且原预制体没有被通过索引而引用显示在其他地方,则原预制体被认定为显示结束。

在一种实施的方式中,原预制体的信息还包括多层次细节信息,其中,所述多层次细节信息以索引的方式包括每个层次所展示的模型信息,所述层次是摄像头与地表之间的距离的范围。

当原预制体被加载时,首先加载与当前层次对应对应的模型;当摄像机与地表之间的距离超出该层次后,上述模型被归还至资源池,对于此时仍需显示的原预制体,加载与当前距离的层次对应的新模型,将此时不需显示的原预制体归还至资源池。具体的,被归还到资源池的模型分配到不被渲染的渲染层,用于避免触发代码逻辑组件、动画组件和粒子组件。可选地,模型也可分配到资源池中其他避免触发上述组件的位置上。

在以上所有的实施方式中,所述原预制体的信息和资源组合预制体的信息采用json数据格式。本发明不局限于此,原预制体的信息和资源组合预制体的信息也可采用xml或其他的数据存储格式。

显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1