游戏界面生成方法、装置和存储介质转让专利

申请号 : CN201811563938.9

文献号 : CN109646955B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 刘仁锋

申请人 : 网易(杭州)网络有限公司

摘要 :

本发明公开了一种游戏界面生成方法、装置和存储介质。该方法包括:创建待生成的游戏界面的目标图元;基于目标图元确定游戏界面的目标接口,其中,目标接口用于创建游戏界面的三维游戏场景中的界面功能;通过目标接口确定三维游戏场景中的目标控件的目标信息;通过目标信息生成游戏界面。通过本发明,达到了提高游戏界面显示的丰富性的效果。

权利要求 :

1.一种游戏界面生成方法,其特征在于,包括:创建待生成的游戏界面的目标图元;

基于所述目标图元确定所述游戏界面的目标接口,其中,所述目标接口用于创建所述游戏界面的三维游戏场景中的界面功能;

通过所述目标接口确定所述三维游戏场景中的目标控件的目标信息;

通过所述目标信息生成所述游戏界面;

其中,创建待生成的所述游戏界面的所述目标图元,包括:封装所述游戏界面的引擎的图元,得到所述目标图元。

2.根据权利要求1所述的方法,其特征在于,通过所述目标接口确定所述三维游戏场景中的目标控件的目标信息包括:通过第一接口确定多个所述目标控件在所述游戏界面上的多个层级上的渲染顺序,其中,多个所述目标控件与多个所述层级之间存在一一映射关系;

通过所述目标信息生成所述游戏界面包括:按照所述渲染顺序对每个所述目标控件在与每个所述目标控件对应的层级上进行渲染,得到所述游戏界面的目标控件。

3.根据权利要求2所述的方法,其特征在于,通过第一接口确定多个所述目标控件在所述游戏界面上的多个层级上的渲染顺序包括:通过所述第一接口修改所述目标图元的渲染队列,其中,所述渲染队列用于指示多个所述目标控件在进行渲染时的顺序;

通过修改后的所述渲染队列来确定所述渲染顺序。

4.根据权利要求1所述的方法,其特征在于,通过所述目标接口确定所述三维游戏场景中的目标控件的目标信息包括:通过第二接口确定所述目标控件的目标挂接点;

通过所述目标信息生成所述游戏界面包括:将所述目标挂接点与所述目标控件进行绑定,以使得所述目标挂接点在所述游戏界面中的运动和所述目标控件在所述游戏界面中的运动相关联。

5.根据权利要求4所述的方法,其特征在于,通过第二接口确定所述目标控件的目标挂接点包括:在待生成的所述游戏界面与所述三维游戏场景中的目标模型进行绑定的情况下,将所述目标模型上的挂接点设置为所述目标挂接点;

在待生成的所述游戏界面与所述三维游戏场景进行绑定的情况下,将所述目标挂接点设置为空。

6.根据权利要求1所述的方法,其特征在于,通过所述目标接口确定所述三维游戏场景中的目标控件的目标信息包括:通过第三接口确定所述三维游戏场景下的图片控件的属性信息;通过所述属性信息创建所述图片控件的图元;

通过所述目标信息生成所述游戏界面包括:通过所述图片控件的图元生成所述游戏界面的图片。

7.根据权利要求6所述的方法,其特征在于,所述属性信息包括以下至少之一:所述图片控件的宽;

所述图片控件的高;

所述图片控件的颜色;

所述图片控件的纹理;

所述图片控件的材质。

8.根据权利要求1所述的方法,其特征在于,通过所述目标接口确定所述三维游戏场景中的目标控件的目标信息包括:通过第四接口确定所述三维游戏场景下的文本控件的文本信息;

通过所述目标信息生成所述游戏界面包括:通过所述文本信息绘制所述游戏界面上的目标文本。

9.根据权利要求1所述的方法,其特征在于,通过所述目标接口确定所述三维游戏场景中的目标控件的目标信息包括:通过第五接口确定所述三维游戏场景下的滚动面板控件的信息;

通过所述目标信息生成所述游戏界面包括:通过所述滚动面板控件的信息生成所述游戏界面上的包括所述目标控件的滚动面板。

10.根据权利要求1至9中任意一项所述的方法,其特征在于,在通过所述目标信息生成所述游戏界面之后,所述方法还包括:在所述游戏界面上获取目标交互指令;

响应所述目标交互指令,在所述三维游戏场景中执行目标交互事件。

11.一种界面生成装置,其特征在于,包括:创建单元,用于创建待生成的游戏界面的目标图元;

第一确定单元,用于基于所述目标图元确定所述游戏界面的目标接口,其中,所述目标接口用于创建所述游戏界面的三维游戏场景中的界面功能;

第二确定单元,用于通过所述目标接口确定所述三维游戏场景中的目标控件的目标信息;

生成单元,用于通过所述目标信息生成所述游戏界面;

其中,所述创建单元通过以下步骤来创建待生成的所述游戏界面的所述目标图元:封装所述游戏界面的引擎的图元,得到所述目标图元。

12.一种存储介质,其特征在于,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行所述权利要求1至10任一项中所述的方法。

13.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行所述权利要求1至10任一项中所述的方法。

说明书 :

游戏界面生成方法、装置和存储介质

技术领域

[0001] 本发明涉及数据处理领域,具体而言,涉及一种游戏界面生成方法、装置和存储介质。

背景技术

[0002] 目前,很多大型三维(3D)游戏追求扁平化用户界面(User Interface,简称为UI)设计,扁平化UI往往能达到一种清爽的感觉,使用起来格外简洁,可以更加简单直接地将信息和事物的工作方式展示出来,减少认知障碍的产生。在扁平化这方面,开源的二维(2D)游戏引擎框架(cocos2dx)的UI部分可以轻易实现。
[0003] 但是,在3D化UI这方面,目前还难以实现。游戏通常为了达到更好的沉浸感,采用了拟物化设计,而无法更近一步,完全实物化。由于界面的3D功能的缺失,从而导致目前游戏界面的显示比较单调。
[0004] 针对现有技术中游戏界面显示比较单调的问题,目前尚未提出有效的解决方案。

发明内容

[0005] 本发明的主要目的在于提供一种游戏界面生成方法、装置和存储介质,以至少解决游戏界面显示比较单调的技术问题。
[0006] 为了实现上述目的,根据本发明的一个方面,提供了一种界面引擎的界面生成方法。该方法包括:创建待生成的游戏界面的目标图元;基于目标图元确定游戏界面的目标接口,其中,目标接口用于创建游戏界面的三维游戏场景中的界面功能;通过目标接口确定三维游戏场景中的目标控件的目标信息;通过目标信息生成游戏界面。
[0007] 可选地,通过目标接口确定三维游戏场景中的目标控件的目标信息包括:通过第一接口确定多个目标控件在游戏界面上的多个层级上的渲染顺序,其中,多个目标控件与多个层级之间存在一一映射关系;通过目标信息生成游戏界面包括:按照渲染顺序对每个目标控件在与每个目标控件对应的层级上进行渲染,得到游戏界面的目标控件。
[0008] 可选地,通过第一接口确定多个目标控件在游戏界面上的多个层级上的渲染顺序包括:通过第一接口修改目标图元的渲染队列,其中,渲染队列用于指示多个目标控件在进行渲染时的顺序;通过修改后的渲染队列来确定渲染顺序。
[0009] 可选地,通过目标接口确定三维游戏场景中的目标控件的目标信息包括:通过第二接口确定目标控件的目标挂接点;通过目标信息生成游戏界面包括:将目标挂接点与目标控件进行绑定,以使得目标挂接点在游戏界面中的运动和目标控件在游戏界面中的运动相关联。
[0010] 可选地,通过第二接口确定目标控件的目标挂接点包括:在待生成的游戏界面与三维游戏场景中的目标模型进行绑定的情况下,将目标模型上的挂接点设置为目标挂接点;在待生成的游戏界面与三维游戏场景进行绑定的情况下,将目标挂接点设置为空。
[0011] 可选地,通过目标接口确定三维游戏场景中的目标控件的目标信息包括:通过第三接口确定三维游戏场景下的图片控件的属性信息;通过属性信息创建图片控件的图元;通过目标信息生成游戏界面包括:通过图片控件的图元生成游戏界面的图片。
[0012] 可选地,属性信息包括以下至少之一:图片控件的宽;图片控件的高;图片控件的颜色;图片控件的纹理;图片控件的材质。
[0013] 可选地,通过目标接口确定三维游戏场景中的目标控件的目标信息包括:通过第四接口确定三维游戏场景下的文本控件的文本信息;通过目标信息生成游戏界面包括:通过文本信息绘制游戏界面上的目标文本。
[0014] 可选地,通过目标接口确定三维游戏场景中的目标控件的目标信息包括:通过第五接口确定三维游戏场景下的滚动面板控件的信息;通过目标信息生成游戏界面包括:通过滚动面板控件的信息生成游戏界面上的包括目标控件的滚动面板。
[0015] 可选地,在通过目标信息生成游戏界面之后,该方法还包括:在游戏界面上获取目标交互指令;响应目标交互指令,在三维游戏场景中执行目标交互事件。
[0016] 为了实现上述目的,根据本发明的另一方面,还提供了一种界面生成装置,其特征在于,包括:创建单元,创建待生成的游戏界面的目标图元;第一确定单元,用于基于目标图元确定游戏界面的目标接口,其中,目标接口用于创建游戏界面的三维游戏场景中的界面功能;第二确定单元,用于通过目标接口确定三维游戏场景中的目标控件的目标信息;生成单元,用于通过目标信息生成游戏界面。
[0017] 为了实现上述目的,根据本发明的另一方面,还提供了一种存储介质。该存储介质中存储有计算机程序,其中,计算机程序被设置为运行时执行本发明实施例中的游戏界面生成方法。
[0018] 为了实现上述目的,根据本发明的另一方面,还提供了一种电子装置。该电子装置包括存储器和处理器,其特征在于,存储器中存储有计算机程序,处理器被设置为运行计算机程序以执行本发明实施例中的游戏界面生成方法。
[0019] 通过本发明,创建待生成的游戏界面的目标图元;基于目标图元确定游戏界面的目标接口,其中,目标接口用于创建游戏界面的三维游戏场景中的界面功能;通过目标接口确定三维游戏场景中的目标控件的目标信息;通过目标信息生成游戏界面。也就是说,在界面引擎中创建待生成的游戏界面的目标图元,该界面引擎与目标图元的兼容性好,基于目标图元确定游戏界面的用于创建游戏界面的三维游戏场景中的界面功能的目标接口,进而通过三维游戏场景下的目标控件的目标信息生成游戏界面,实现了基于界面引擎生成三维化的游戏界面的目的,避免了创建的控件无法很好地与界面引擎兼容,解决了游戏界面显示比较单调的问题,进而达到了提高游戏界面显示的丰富性的技术效果。

附图说明

[0020] 构成本申请的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
[0021] 图1是本发明实施例的一种游戏界面生成方法的移动终端的硬件结构框图;
[0022] 图2是根据本发明实施例的一种游戏界面生成方法的流程图;
[0023] 图3是根据本发明实施例的3D化UI的字体信息的示意图;
[0024] 图4是根据本发明实施例的一种填充图元信息的示意图;
[0025] 图5是根据本发明实施例的一种填充纹理坐标信息的示意图;
[0026] 图6A是根据本发明实施例的一种3D化UI的示意图;
[0027] 图6B是根据本发明实施例的另一种3D化UI的示意图;以及
[0028] 图7是根据本发明实施例的一种界面生成装置的示意图。

具体实施方式

[0029] 需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
[0030] 为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
[0031] 需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0032] 本申请实施例所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在移动终端上为例,图1是本发明实施例的一种游戏界面生成方法的移动终端的硬件结构框图。如图1所示,移动终端10可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)和用于存储数据的存储器104,可选地,上述移动终端10还可以包括用于通信功能的传输装置106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述移动终端10的结构造成限定。例如,移动终端10还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
[0033] 存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本发明实施例中的一种游戏界面生成方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器
102远程设置的存储器,这些远程存储器可以通过网络连接至移动终端10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
[0034] 传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括移动终端10的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
[0035] 在本实施例中提供了一种运行于上述移动终端的一种游戏界面生成方法,图2是根据本发明实施例的一种游戏界面生成方法的流程图。如图2所示,该流程包括如下步骤:
[0036] 步骤S202,创建待生成的游戏界面的目标图元。
[0037] 在本发明上述步骤S202提供的技术方案中,可以通过界面引擎创建待生成的游戏界面的目标图元,该界面引擎用于提供面向人机交互的设计,可以用于生成和渲染界面,从而开发出具有强烈视觉效果的游戏界面。可选地,该实施例的界面引擎可以为游戏引擎中包括的部分嵌入程序,可以为已编写好的可编辑游戏系统或者一些交互式实时图像应用程序的核心组件,不仅用于生成和渲染界面,还可以用于提供各种在编写游戏时所需的各种工具,从而可以让开发者便捷且快速地开发相应的游戏程序。考虑到游戏界面的性能与开发效率,该实施例可以创建待生成的游戏界面的目标图元(primitive),该目标图元可以是图形软件包中用来描述各种图形元素的函数,该目标图元与界面引擎的兼容性好,可以封装界面引擎的目标图元,使得待生成的游戏界面与界面引擎的场景模型可以很好地兼容。
[0038] 可选地,该实施例在对目标图元进行扩展时,可以在C++层开发。
[0039] 步骤S204,基于目标图元确定游戏界面的目标接口。
[0040] 在本发明上述步骤S204提供的技术方案中,在创建待生成的游戏界面的目标图元之后,基于目标图元确定游戏界面的目标接口,其中,目标接口用于创建游戏界面的三维游戏场景中的界面功能。
[0041] 在该实施例中,目标接口可以为UI功能接口,用于创建游戏界面的三维游戏场景中的界面功能,可以包括设置是否可点击(set_touch_enable)的功能接口,设置是否吞噬事件(set_swallow_event)的功能接口,运行控件的动作(run_action)的功能接口,设置控件的锚点(set_anchor_point)的功能接口,添加点击响应事件(add_click_listner)的功能接口等。
[0042] 可选地,该实施例的用于生成游戏界面的接口还可以包括设置位置(set_position)、设置旋转(set_rotation)、设置缩放(set_scale)等基础接口。
[0043] 举例而言,基于目标图元设置是否吞噬事件(set_swallow_event)的目标接口,响应于游戏界面的点击操作,会产生一条到3D世界空间中的一条虚拟射线,该虚拟射线可以与游戏界面中的所有控件按照AABB的碰撞检测方法进行检测,检测的结果是返回一个点击列表,该点击列表中的每个元素包含了控件本身的信息以及点击距离,然后按照点击距离进行排序,所有比具有吞噬标记的控件距离更远的控件,均无法得到响应。
[0044] 可选地,该实施例的点击响应事件(add_click_listener)的接口和点击(on_click)的接口为控件添加一个点击响应以及触发相应的点击响应。当虚拟射线与控件相交碰撞,且事件没有被距离更近的控件吞噬时,将触发点击(on_click)方法,返回订阅事件时指定的用户数据(user_data)。
[0045] 可选地,该实施例的运行控件的动作(run_action)的接口,每个目标控件都有一个行为组件(ActionComp),用于为该目标控件运行一个行为,比如,按钮的点击缩放行为以及透明度变化行为、旋转行为、移动行为等其它行为,从而使得游戏界面支持各种行为,可以实现各种效果。该实施例还可以通过停止运行控件的动作(stop_all_action)的接口停止目标控件的所有行为。
[0046] 步骤S206,通过目标接口确定三维游戏场景中的目标控件的目标信息。
[0047] 在本发明上述步骤S206提供的技术方案中,在基于目标图元确定游戏界面的目标接口之后,通过目标接口确定三维游戏场景中的目标控件的目标信息。
[0048] 该实施例的目标控件为三维游戏场景下的控件(例如,UI控件),可以采用脚本语言python层进行开发,通过事件驱动,可以包括与3D世界空间中的一条虚拟射线进行碰撞检测的控件、添加有点击响应的控件、与运行的一个行为相对应的控件、与挂接点进行挂接的控件、图片控件、文本控件、滚动面板控件等。通过不同的目标控件实现各种3D化的游戏界面。
[0049] 该实施例通过目标接口确定三维游戏场景中的目标控件的目标信息,比如,通过目标接口确定目标控件在渲染时的优先顺序信息,避免目标控件始终在上层渲染,可以做到遮挡,从而支持渲染层级设置。该实施例通过目标接口还可以确定目标控件挂接的挂接点信息,使得目标控件在被挂接点的挂接空间下做相对运动,比如,做旋转、缩放、平移的相对运动。该实施例的目标信息还可以用于实现游戏界面的材质设置的信息、用于实现图元填充创建的信息等。
[0050] 步骤S208,通过目标信息生成游戏界面。
[0051] 在本发明上述步骤S208提供的技术方案中,在通过目标接口确定三维游戏场景中的目标控件的目标信息之后,通过目标控件的目标信息生成游戏界面,比如,设置游戏界面的材质,游戏界面的图元填充,进而结合界面引擎的骨骼动画,使得游戏界面可以带来很好的3D表现,实现3D化的游戏界面。
[0052] 在该实施例中,游戏界面为游戏应用的人机交互界面,其中包括了游戏画面中的按钮、动画、文字、窗口等与游戏玩家直接或间接进行交互的游戏设计元素;三维游戏场景的游戏界面相对于扁平化的游戏界面而言,可以通过上述游戏界面上的3D元素展现出3D效果的游戏画面,比如,通过透视、纹理、渐变等3D元素还原出建筑物、树木、天空、道路等环境的3D效果的游戏画面;目标控件为上述三维游戏场景下的通过事件进行驱动的控件,可以包括与三维游戏场景中的一条虚拟射线进行碰撞检测的控件、添加有点击响应事件的控件、与运行的一个行为相对应的控件、与三维游戏场景中的挂接点进行挂接的控件、图片控件、文本控件、滚动面板控件等,从而通过不同的目标控件实现各种三维游戏场景效果的游戏界面。
[0053] 通过上述步骤S202至步骤S208,创建待生成的游戏界面的目标图元;基于目标图元确定游戏界面的目标接口,其中,目标接口用于创建游戏界面的三维游戏场景中的界面功能;通过目标接口确定三维游戏场景中的目标控件的目标信息;通过目标信息生成游戏界面。也就是说,在界面引擎中创建待生成的游戏界面的目标图元,该界面引擎与目标图元的兼容性好,基于目标图元确定游戏界面的用于创建游戏界面的三维游戏场景中的界面功能的目标接口,进而通过三维游戏场景下的目标控件的目标信息生成游戏界面,实现了基于界面引擎生成三维化的游戏界面的目的,避免了创建的控件无法很好地与界面引擎兼容,解决了游戏界面显示比较单调的问题,进而达到了提高游戏界面显示的丰富性的技术效果。
[0054] 作为一种可选的实施方式,步骤S206,通过目标接口确定三维游戏场景中的目标控件的目标信息包括:通过第一接口确定多个目标控件在游戏界面上的多个层级上的渲染顺序,其中,多个目标控件与多个层级之间存在一一映射关系;步骤S208,通过目标信息生成游戏界面包括:按照渲染顺序对每个目标控件在与每个目标控件对应的层级上进行渲染,得到游戏界面的目标控件。
[0055] 在该实施例中,目标接口包括第一接口,为设置渲染队列的接口(set_render_group),以支持渲染层级设置,通过第一接口确定多个目标控件在游戏界面上的多个层级上的渲染顺序,该渲染顺序也即多个目标控件在游戏界面上的多个层级上进行渲染的优先顺序,并且多个目标控件与多个层级之间存在一一映射关系,也即,一个目标控件在对应的一个层级上进行渲染,可以做到遮挡效果,避免了仅在最上层进行渲染,比如,在三维游戏场景中,背包的两扇门可以将背包中各个物品关起来不显示,而不是物品穿帮显示在最上层。在通过第一接口确定多个目标控件在游戏界面上的多个层级上的渲染顺序之后,按照渲染顺序对每个目标控件在与每个目标控件对应的层级上进行渲染,从而得到游戏界面中目标控件的合理显示。
[0056] 作为一种可选的实施方式,通过第一接口确定多个目标控件在游戏界面上的多个层级上的渲染顺序包括:通过第一接口修改目标图元的渲染队列,其中,渲染队列用于指示多个目标控件在进行渲染时的顺序;通过修改后的渲染队列来确定渲染顺序。
[0057] 在该实施例中,在通过第一接口确定多个目标控件在游戏界面上的多个层级上的渲染顺序时,可以通过第一接口修改目标图元(primitve)的渲染队列(render_stage),以修改多个目标控件在多个层级上进行渲染时的渲染顺序。在通过第一接口修改目标图元的渲染队列之后,通过修改后的渲染队列来确定渲染顺序,使得精确地控制多个目标控件在多个层级上进行渲染的优先顺序,可以做到遮挡效果,从而实现了渲染层级设置,避免仅在最上层进行渲染的问题,从而达到了丰富游戏界面显示的效果。
[0058] 作为一种可选的实施方式,步骤S206,通过目标接口确定三维游戏场景中的目标控件的目标信息包括:通过第二接口确定目标控件的目标挂接点;步骤S208,通过目标信息生成游戏界面包括:将目标挂接点与目标控件进行绑定,以使得目标挂接点在游戏界面中的运动和目标控件在游戏界面中的运动相关联。
[0059] 在该实施例中,3D化的游戏界面需要融入3D的模型以及三维游戏场景,需要支持绑定操作。在通过目标接口确定三维游戏场景中的目标控件的目标信息时,可以通过第二接口(bind_to)确定目标控件的目标挂接点(socket),该第二接口可以为目标图元的绑定接口,将该目标挂接点与目标控件进行绑定,以使得目标挂接点在游戏界面中的运动和目标控件在游戏界面中的运动相关联。该实施例的绑定操作调用了目标图元的绑定接口,其继承了来自界面引擎的节点基类(SpaceNode),这样目标控件将在目标挂接点的挂接控件下做相对运动,也即,当目标挂接点运动时,目标控件将会跟随目标挂接点进行运动,可以做旋转、缩放、平移的相对运动,从而实现了三维游戏场景下的旋转、缩放、平移,可以在三维游戏场景下具有深度信息,比如,三维游戏场景下的背包的左侧抽屉是菜单项,菜单上的文字UI会跟随抽屉的抽拉而位移。进一步结合界面引擎的骨骼动画,使得3D化的游戏界面(3DUI)可以带来很好的3D表现,从而达到了丰富游戏界面显示的效果。
[0060] 作为一种可选的实施方式,通过第二接口确定目标控件的目标挂接点包括:在待生成的游戏界面与三维游戏场景中的目标模型进行绑定的情况下,将目标模型上的挂接点设置为目标挂接点;在待生成的游戏界面与三维游戏场景进行绑定的情况下,将目标挂接点设置为空。
[0061] 在该实施例中,在通过第二接口确定目标控件的目标挂接点时,在待生成的游戏界面与三维游戏场景中的目标模型(model)进行绑定的情况下,将目标模型上的挂接点设置为目标挂接点,也即,当待生成的游戏界面绑定给目标模型时,目标挂接点可以为目标模型本身的特定挂接点,从而很好地融入目标模型,该目标模型可以为基于界面引擎确定的模型,可选地,该实施例可以将游戏界面像特效一样挂接到界面引擎的目标模型下。在待生成的游戏界面与三维游戏场景进行绑定的情况下,将目标挂接点设置为空(None),也即,当待生成的游戏界面直接绑定给三维游戏场景时,目标挂接点直接为空,从而很好地融入三维游戏场景。在此基础上,当目标挂接点运动时,目标控件将会跟随目标挂接点进行相对运动,进一步结合界面引擎的骨骼动画,使得3D化的游戏界面可以带来很好的3D表现,从而达到了丰富游戏界面显示的效果。
[0062] 作为一种可选的实施方式,步骤S206,通过目标接口确定三维游戏场景中的目标控件的目标信息包括:通过第三接口确定三维游戏场景下的图片控件的属性信息;通过属性信息创建图片控件的图元;步骤S208,通过目标信息生成游戏界面包括:通过图片控件的图元生成游戏界面的图片。
[0063] 在该实施例中,目标接口包括第三接口,目标控件可以包括图片控件(UIImageView),该图片控件也即精灵控件。通过第三接口确定三维游戏场景下的图片控件的属性信息,该属性信息可以为用于填充图元的信息,该属性信息可以包括图片控件的宽(width)、图片控件的高(height)、图片控件的颜色(color)、图片控件的纹理;图片控件的材质等信息。通过属性信息创建图片控件的图元,比如,根据图片控件的宽(width)、图片控件的高(height)、图片控件的颜色(color)、图片控件的纹理坐标(UV)填充图元,还可以设置相应的材质(technique)和精灵图片(sprite)。
[0064] 可选地,通过第三接口为图元设置材质,然后给材质先设置相应的贴图,通过传递贴图的路径,创建一个贴图,并将其设置给材质。在通过属性信息创建图片控件的图元时,可以调用目标图元(primitive)的创建四边形(create_poly4)方法,使用四个元组来填充四个顶点,其中,每个元组有四个元素,分别为坐标、颜色、纹理坐标,其中,坐标为世界坐标,第一个坐标从零点开始,纹理坐标包括横坐标(uv.u)和纵坐标(uv.v),进而通过图片控件的图元生成游戏界面的图片。
[0065] 可选地,该实施例的游戏界面可以支持图集,实现动态合批,可以采用界面引擎的动态合批技术实现动态合批。
[0066] 作为一种可选的实施方式,步骤S206,通过目标接口确定三维游戏场景中的目标控件的目标信息包括:通过第四接口确定三维游戏场景下的文本控件的文本信息;步骤S208,通过目标信息生成游戏界面包括:通过文本信息绘制游戏界面上的目标文本。
[0067] 在该实施例中,目标接口包括第四接口,目标控件可以包括文本控件,通过目标接口确定三维游戏场景中的目标控件的目标信息,可以通过第四接口确定游戏界面的三维游戏场景下的文本控件的文本信息,该文本控件可以为字体控件,文本信息可以为每个文字的字形信息在字体文件中的偏移(offset)、位置(area)、尺寸(size)、字体间距(advance)等文本信息。可选地,该实施例的字体(font)的扩展可以在C++层进行开发。
[0068] 可选地,操作系统有获取字体信息的接口,以下是在window操作系统上的获取接口。在windows操作系统上可以通过接口GetGlyphOutlineW来获得单个字体的信息,比如,获取字体宽度、字体高度,左侧位置,上侧位置,字间距等文本信息。在进行字体渲染的时候,需要将字体从字库中提取出来填充到一个贴图文件中,并根据字体信息,以及贴图的长宽信息,获得该字体在贴图中的纹理坐标信息。可选地,在获取到字体信息之后,就可以填充图元以及填充纹理坐标信息,可以从底层的字体信息,转换到python层,得到的文本信息分别为横向偏移(offset_x),纵向偏移(offset_y),字体宽度(size_x),字体高度(size_y),字体间距(advance),左侧在贴图中位置(area_l),右侧在贴图中位置(area_r),上沿在贴图中位置(area_t),下沿在贴图中位置(area_b),从而通过文本信息绘制游戏界面上的目标文本,实现字体绘制。
[0069] 作为一种可选的实施方式,步骤S206,通过目标接口确定三维游戏场景中的目标控件的目标信息包括:通过第五接口确定三维游戏场景下的滚动面板控件的信息;步骤S208,通过目标信息生成游戏界面包括:通过滚动面板控件的信息生成游戏界面上的包括目标控件的滚动面板。
[0070] 在该实施例中,目标接口包括第五接口,目标控件可以包括滚动面板控件,在通过目标接口确定三维游戏场景中的目标控件的目标信息时,通过第五接口确定三维游戏场景下的滚动面板控件的信息。该滚动面板控件的信息包括该滚动面板(NXScrollView)的信息和滚动项(NXScrollViewItem)的信息,通过滚动面板控件的信息生成游戏界面上的包括目标控件的滚动面板,可以用来实现多行多列的3D化的游戏界面的控件的滚动面板需求,具备高效循环利用,可以支持单选事件、多选事件、裁剪功能等,并可以通过数据驱动进行显示。
[0071] 可选地,在实现裁剪功能时,需要给遮罩(mask)设置相应的蒙版着色器(stencil shader)来设置蒙版,并扩展目标图元(primitive)的接口,使其可以设置相应的渲染队列(render stage),从而保证遮罩优先渲染。
[0072] 可选地,该实施例的滚动面板需要监听触摸事件(touch),同时也要支持裁剪功能(通过蒙板遮罩来实现)。当响应触摸事件时,会返回触摸参数,该触摸参数有横向与纵向的一帧偏移,此时滚动面板的根节点(root),会带动其下的所有子节点顺着偏移参数进行移动,其中,根节点是3D UI一个基类控件。当移动超出预定滚动范围时,会被蒙版遮罩进行裁剪。以竖直方向的滚动为例,当子节点依次向上移动时,队首的一排节点会复用到队尾部,并设置新的控件内容。另外,为保证蒙版支持裁剪功能,该实施例需要保证蒙版优先进行渲染,该实施例设置渲染队列(set_render_group)接口,可以将其渲染队列设置一个靠前的级别(level),从而保证蒙版优先进行渲染。
[0073] 可选地,该实施例的游戏界面通过UI着色器(shader)实现各种效果表现。
[0074] 作为一种可选的实施方式,在步骤S208,通过目标信息生成游戏界面之后,该方法还包括:在游戏界面上获取目标交互指令;响应目标交互指令,在三维游戏场景中执行目标交互事件。
[0075] 在该实施例可以扩展目标图元,使其支持点击交互事件。在通过目标信息生成游戏界面之后,在游戏界面上获取目标交互指令,该目标交互事件可以为点击交互指令,进而响应目标交互指令,在三维游戏场景中执行目标交互事件。
[0076] 可选地,响应于游戏界面的点击操作,会产生一条到3D世界空间中的一条虚拟射线,该虚拟射线与所有的目标控件会按照AABB的碰撞检测方法进行检测,检测的结果返回一个点击列表,列表中的每个元素包含了目标控件本身的信息以及点击距离,然后按距离排序,所有比具有吞噬标记的控件距离更远的控件,均无法得到响应。
[0077] 可选地,为目标控件添加一个点击响应以及触发相应的点击响应。当虚拟射线与目标控件相交碰撞时,并且事件没有被距离更近的控件吞噬时,将触发点击(on_click)方法,返回在订阅事件时所指定的用户数据(user_data)。
[0078] 在该实施例中,由于目标图元(primitive)与界面引擎的兼容性好,3D化的游戏界面可以封装界面引擎的图元,并扩展目标图元使其支持点击交互事件,同时还可以扩展其接口,使其支持渲染层级设置、材质设置、图元填充创建等,从而提高3D化游戏界面的性能与降低3D化游戏界面的开发效率;考虑提高3D化游戏界面的扩展性以及各个控件通过事件驱动,更新频率较低等特点,3D化的游戏界面中的各个目标控件可以采用python层进行开发,涉及目标图元及字体的扩展,可以在C++层开发。在实现合批时,支持图集,可以采用引擎界面的动态合批技术。该实施例的3D化UI界面使用起来门槛较低,结合动画,特效,shader等可以实现很多具有强烈视觉效果的效果,扩展方便,即使遇见复杂需求,也能轻易扩展添加相应的控件,实现了基于界面引擎生成三维化的游戏界面的目的,避免了创建的控件无法很好地与界面引擎兼容,解决了游戏界面显示比较单调的问题,进而达到了提高游戏界面显示的丰富性的技术效果。
[0079] 需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
[0080] 下面结合优选的实施方式对本发明的技术方案进行说明。
[0081] 该实施例的游戏界面可以与引擎界面的场景模型很好地兼容;支持3D空间下的缩放、旋转、位移;支持将UI像特效一样挂接到引擎界面的场景模型下;支持点击事件交互;提供与cocosui类似的UI接口,使用起来门槛较低;提供一套UI着色器,支持各种效果表现;提供一套UI控件,方便实现各种3D化UI界面;支持各种行为,可以通过运行控件的动作实现各种效果。
[0082] 下面对该实施例的基类控件的实现方法进行介绍。
[0083] 该实施例的基类空间为所有控件的基类,支持在基本3D空间下的设置位置(set_position),设置旋转(set_rotation),设置缩放(set_scale)等基础接口,还可以包含以下UI功能接口:设置是否可点击(set_touch_enable),设置是否吞噬事件(set_swallow_event),运行控件的动作(run_action),设置控件的锚点(set_anchor_point),添加点击响应事件(add_click_listner)等。
[0084] 下面对部分接口的实现方法进行说明。
[0085] 设置是否吞噬事件接口(set_swallow_event),响应于点击游戏界面的点击操作,会产生一条到3D世界空间中的一条虚拟射线,该虚拟射线与所有的控件按照AABB的碰撞检测方法进行检测,检测的结果返回一个点击列表,该点击列表中的每个元素包含了控件本身的信息以及点击距离,然后按点击距离进行排序,所有比具有吞噬标记的控件距离更远的控件,均无法得到响应。设置是否吞噬事件接口可以通过如下代码进行实现:
[0086] def set_swallow_event(self,swallow):
[0087] if self.primitive:
[0088] self.primitive.break_pick=swallow
[0089] 设置渲染队列的接口(set_render_group),该接口通过修改primitve的渲染队列(render_stage)来修改渲染顺序,可以用来精确地控制控件渲染的优先顺序。该设置渲染队列的接口可以通过如下代码进行实现:
[0090] def set_render_group(self,group):
[0091] if self.primitive:
[0092] self.render_group=group
[0093] self.primitive.render_stage=group
[0094] 添加点击响应事件接口(add_click_listener)与点击(on_click)接口,这两个接口用于为控件添加一个点击响应以及触发相应的点击响应。当虚拟射线与控件相交碰撞,且事件没有被距离更近的控件吞噬时,将触发on_click方法,返回在订阅事件时所指定的用户数据(user_data)。其中,添加点击响应事件接口可以通过如下代码进行实现:
[0095] def add_click_listener(self,func,user_data=None):
[0096] if func==None:
[0097] return
[0098] if func in self.click_listeners:
[0099] return
[0100] self.click_listeners[func]=user_data
[0101] NXRoot.instance().check_enable_handler()
[0102] 该实施例的点击(on_click)接口可以通过如下代码实现:
[0103] def_on_click(self):
[0104] for func,user_data in self.click_listeners.iteritems():
[0105] func(user_data)
[0106] 运行控件的动作接口(run_action),每个控件都有一个行为组件(ActionComp),可以为该控件运行一个行为,比如,按钮的点击缩放行为以及透明度变化行为、旋转行为、移动行为等。该运行控件的动作接口可以通过如下代码实现:
[0107] def run_action(self,action,repeat_time=1):
[0108] self.action_comp.run_action(action,repeat_time)
[0109] 停止运行控件的动作的接口(stop_all_action),用于停止控件的所有行为,可以通过如下代码进行实现:
[0110] def stop_all_actions(self):
[0111] self.action_comp.stop_all_actions()
[0112] 绑定接口(bind_to),3D化UI如果要融入3D的模型及场景,支持绑定(bind)操作,该绑定操作支持绑定给场景或模型。当绑定给场景时,挂接点(socket)为空(None),当绑定给模型时,挂接点为模型本身的特定挂接点。该实施例的绑定操作调用了图元primitive的绑定接口,其继承来自界面引擎的节点基类(SpaceNode),当绑定到某个挂接点之后,控件将在被挂接点的挂接空间下做相对运动,比如,做旋转、缩放、平移的相对运动,当挂接点运动时,控件将会跟随挂接点的运动而运动,进而结合界面引擎的骨骼动画,为3D化UI带来很好的3D表现。该绑定接口可以通过如下代码进行实现:
[0113] def bind_to(self,socket,model):
[0114] if socket==None or model==None:
[0115] return
[0116] self.bind_model=model
[0117] self.bind_socket=socket
[0118] self.reset_bind()
[0119] #同时设置所有子结点
[0120] for child in self.childs:
[0121] child.bind_to(socket,model)
[0122] 下面对该实施例的精灵控件的实现方法进行介绍。
[0123] 该实施例的精灵控件可以为图片控件(UIImageView),需要根据宽(width),高(height),以及color(颜色),UV(纹理坐标)信息,填充图元,并设置相应的technique(材质)和sprite(精灵图片)。
[0124] 下面对精灵空间的部分接口的实现方法进行介绍。
[0125] 首先为图元设置材质,然后给材质设置相应的贴图,可以通过如下代码进行实现:
[0126] def init_tech(self):
[0127] self.set_technique('model/nxui/ui_texture_color.mtg')
[0128] self.set_texture(self.tex_path)
[0129] 通过传递贴图路径,创建一个贴图,并设置给材质,可以通过如下代码设置贴图:
[0130] def set_texture(self,tex_path):
[0131] if tex_path==None or tex_path==”:
[0132] return
[0133] self.tex_path=tex_path
[0134] self.texture=render.texture(self.tex_path,False,False)
[0135] if self.lockscale:
[0136] width,height=self.texture.size
[0137] self.height=self.width*height/width
[0138] self.primitive.set_texture(0,self.texture)
[0139] 在创建图元时,可以调用primitive的创建四边形(create_poly4)方法,使用了四个元组来填充四个顶点,每个元组有四个元素,分别为坐标、颜色、纹理坐标,其中,坐标为世界坐标,第一个坐标从零点开始,纹理坐标包括横坐标(uv.u)和纵坐标(uv.v)。可以通过如下代码初始化图元:
[0140] def init_poly(self):
[0141] w=self.width
[0142] h=self.height
[0143] uv=self.uv
[0144] col=self.color
[0145] self.primitive.create_poly4(
[0146] [(
[0147] (math3d.vector(0,0,0),col,uv[0][0],uv[0][1]),
[0148] (math3d.vector(0,h,0),col,uv[1][0],uv[1][1]),
[0149] (math3d.vector(w,h,0),col,uv[2][0],uv[2][1]),
[0150] (math3d.vector(w,0,0),col,uv[3][0],uv[3][1])
[0151] )]);
[0152] 下面对该实施例的字体控件的实现方法进行介绍。
[0153] 该实施例的字体控件属于是3D化UI的文本控件,需要解析每个文字的字形信息在字体文件中的偏移(offset)、位置(area)、尺寸(size)、字间距(advance)等信息。
[0154] 图3是根据本发明实施例的3D化UI的字体信息的示意图。如图3所示,字体信息包括字体“g”的字体宽度(width)、字体高度(height)、字体间距(advance),其中,字体宽度由字体“g”的横坐标xMax和横坐标xMin得到,字体高度由纵坐标yMax和纵坐标yMin得到,BearingX为字体“g”的左边位置,BearingY为字体“g”的上边位置,origin用于指示原点。
[0155] 在Ios、android及windows都有各自系统获取字体信息的接口,以下是在windows平台上的获取接口。在windows上可以通过接口GetGlyphOutlineW来获得单个字体的信息,比如,宽度,高度,左边位置,上边位置,字间距等。在字进行体渲染时,需要将字体从字库中提取出来填充到一个贴图文件中,并根据字体信息,以及贴图的长宽信息,获得该字体在贴图中的纹理坐标信息,最终根据纹理坐标信息实现字体的绘制,实现代码可以如下:
[0156] GLYPHMETRICS gm;
[0157] MAT2im={{0,1},{0,0},{0,0},{0,1}};
[0158] nfd::Dword totalSize=(nfd::Dword)::GetGlyphOutlineW(m_dc,code_point,glyphformat,&gm,0,NULL,&im);
[0159] FontGlyphPtr fontglyph(new FontGlyph());
[0160] fontglyph‑>Width=(nfd::Dword)(gm.gmBlackBoxX);
[0161] fontglyph‑>Height=(nfd::Dword)(gm.gmBlackBoxY);
[0162] fontglyph‑>Left=(nfd::Int32)(gm.gmptGlyphOrigin.x);
[0163] fontglyph‑>Upper=(nfd::Int32)(gm.gmptGlyphOrigin.y);
[0164] fontglyph‑>Pitch=(nfd::Dword)((fontglyph‑>Width+4‑1)&(~(4‑1)));//4字节对齐
[0165] fontglyph‑>GrayScale=grayscale;
[0166] fontglyph‑>AdvanceX=(nfd::Int32)(gm.gmCellIncX);
[0167] fontglyph‑>AdvanceY=(nfd::Int32)(gm.gmCellIncY);
[0168] fontglyph‑>DataLen=totalSize;
[0169] fontglyph‑>Data=nfd::SharedMemory(new nfd::Byte[totalSize]);
[0170] 可选地,在获取到字体信息后,就可以填充图元以及填充纹理坐标信息。在从底层的字体信息转换到python层之后,得到的信息可以分别为横向偏移(offset_x)、纵向偏移(offset_y)、字体宽度(size_x)、字体高度(size_y)、字体间距(advance),字体左侧在贴图中的位置area_l,字体右侧在贴图中的位置area_r,字体上沿在贴图中的位置area_t,字体下沿在贴图中的位置area_b。
[0171] 下面以文字“edge”进行举例说明。
[0172] 图4是根据本发明实施例的一种填充图元信息的示意图。如图4所示,为描述清楚,“edge”使用了三种颜色:黄色,蓝色,深蓝色。下面以“e”字为例进行描述。
[0173] 在蓝色背景的左下角坐标为(0,0–offset_y–size_y),也即,(0,1),右上角坐标为(advance,0‑offset_y),也即,(48,45);深蓝色背景的左下角坐标为(offset_x,0–offset_y–size_y),也即,(3,1),右上角度坐标为(offset_x+size_x,0‑offset_y)也即,(43,45)。“e”坐标区域为深蓝色背景的左下坐标与右上坐标两个坐标,即可填充“e”的图元,再加上字体间距就可以继续填充下一个字体,依次类推,最终渲染出所有的文字“edge”。
[0174] 图5是根据本发明实施例的一种填充纹理坐标信息的示意图。如图5所示,左侧有一个黑色贴图,在贴图左下角有三个白色方块,可以分别为(e,d,g)三个字符的纹理进行贴图,由于在图形调试工具(nsight)下未按透明通道进行渲染,所以看起来是白方块。通过获取字块区域(get_area)接口可以得到相应的字块在贴图中的区域信息,比如,字体左侧在贴图中的位置area_l,字体右侧在贴图中的位置area_r,字体上沿在贴图中的位置area_t,字体下沿在贴图中的位置area_b,再根据贴图的大小,即可得到相应的纹理坐标信息。
[0175] 在收集文本所有字体的坐标信息,纹理坐标信息,颜色信息(可指定)后,就可以用一个生成一个图元列表,再通过创建四边形(create_poly4),用一个批次创建出一个文本的所有字体,实现绘制字体。
[0176] 下面对该实施例的滚动面板控件的实现方法进行介绍。
[0177] 该实施例的滚动面板控件由一滚动面板(NXScrollView)和滚动项(NXScrollViewItem)组成,可以用来实现多行多列的3D UI控件的滚动面板需求,具备高效循环利用、支持单选事件、多选事件、裁剪等功能,并通过数据驱动显示。
[0178] 在裁剪功能上,需要给遮罩(mask)设置通过蒙版着色器(stencil shader)设置蒙版,并扩展primitive接口,使其可设置相应的渲染队列(render stage),保证遮罩(mask)优先渲染。
[0179] 可选地,该实施例的滚动面板需要监听触摸事件(touch),同时也要支持裁剪,可以通过蒙板遮罩实现。当响应触摸事件时,会返回触摸参数,触摸参数有横向与纵向的一帧偏移,此时滚动面板的根节点(root)是一个3DUI的控件基类,会带动其下的所有子节点顺着偏移参数进行移动,当移动超出滚动范围时,会被蒙版遮罩进行裁剪,以竖直方向的滚动为例,当子节点依次向上移动时,队首的一排节点会复用到队尾部,并设置新的控件内容。另外,为保证蒙版支持裁剪功能,必须保证蒙版优先渲染,这里用到设置渲染队列(set_render_group)接口,将其渲染队里设置一个靠前的级别(level)。
[0180] 在该实施例中,每个控件项要被裁剪,需要设置与其配套的蒙版着色器,以匹配裁剪。
[0181] 下面对本发明实施例的应用场景进行介绍。
[0182] 图6A是根据本发明实施例的一种3D化UI的示意图。如图6A所示,该实施例的3D化UI与界面引擎的场景模型很好的兼容,以支持渲染层级设置,可以在三维游戏场景中做到遮挡,背包的两扇门可以将图6B中的背包的各个物品关起来不显示,而不是物品穿帮显示在最上层。
[0183] 图6B是根据本发明实施例的另一种3D化UI的示意图。如图6B所示,该3D化UI支持三维游戏场景中的旋转、位移、缩放,具有深度信息,背包的左侧的抽屉是菜单项,菜单上的文字UI会跟随抽屉的抽拉而位移,比如,“全部”随着抽屉的抽拉也位移,从而提高了游戏界面显示的丰富性。
[0184] 该实施例的基于界面引擎的3D化UI,使用起来门槛较低,结合动画,特效,着色器等可以实现很多具有强烈视觉效果的效果。该UI系统已具备一系列UI功能,可以应付大部分的3D界面的需求。同时,扩展方便,即使遇见复杂需求,也能轻易扩展添加相应的控件。
[0185] 本发明实施例还提供了一种界面生成装置。需要说明的是,该实施例的界面生成装置可以用于执行本发明实施例的游戏界面生成方法。
[0186] 图7是根据本发明实施例的一种界面生成装置的示意图。如图700所示,该界面生成装置700包括:创建单元10、第一确定单元20、第二确定单元30和生成单元40。
[0187] 创建单元10,用于创建待生成的游戏界面的目标图元。
[0188] 第一确定单元20,用于基于目标图元确定游戏界面的目标接口,其中,目标接口用于创建游戏界面的三维游戏场景中的界面功能。
[0189] 第二确定单元30,用于通过目标接口确定三维游戏场景中的目标控件的目标信息。
[0190] 生成单元40,用于通过目标信息生成游戏界面。
[0191] 可选地,第二确定单元30包括:第一确定模块,用于通过第一接口确定多个目标控件在游戏界面上的多个层级上的渲染顺序,其中,多个目标控件与多个层级之间存在一一映射关系;生成单元40包括:按照渲染顺序对每个目标控件在与每个目标控件对应的层级上进行渲染,得到游戏界面的目标控件。
[0192] 可选地,第一确定模块包括:修改子模块,用于通过第一接口修改目标图元的渲染队列,其中,渲染队列用于指示多个目标控件在进行渲染时的顺序;确定子模块,用于通过修改后的渲染队列来确定渲染顺序。
[0193] 可选地,第二确定单元30包括:第二确定模块,用于通过第二接口确定目标控件的目标挂接点;生成单元40包括:绑定模块,用于将目标挂接点与目标控件进行绑定,以使得目标挂接点在游戏界面中的运动和目标控件在游戏界面中的运动相关联。
[0194] 可选地,通过第二接口确定目标控件的目标挂接点包括:在待生成的游戏界面与三维游戏场景中的目标模型进行绑定的情况下,将目标模型上的挂接点设置为目标挂接点;在待生成的游戏界面与三维游戏场景进行绑定的情况下,将目标挂接点设置为空。
[0195] 可选地,第二确定单元30包括:第三确定模块,用于通过第三接口确定三维游戏场景下的图片控件的属性信息;创建模块,用于通过属性信息创建图片控件的图元;生成单元40包括:第一生成模块,用于通过图片控件的图元生成游戏界面的图片。
[0196] 可选地,该实施例的属性信息包括以下至少之一:图片控件的宽;图片控件的高;图片控件的颜色;图片控件的纹理;图片控件的材质。
[0197] 可选地,第二确定单元30包括:第四确定模块,用于通过第四接口确定三维游戏场景下的文本控件的文本信息;生成单元40包括:绘制模块,用于通过文本信息绘制游戏界面上的目标文本。
[0198] 可选地,第二确定单元30包括:通过第五接口确定三维游戏场景下的滚动面板控件的信息;生成单元40包括:第二生成模块,用于通过滚动面板控件的信息生成游戏界面上的包括目标控件的滚动面板。
[0199] 可选地,该装置还包括:获取单元,用于在通过目标信息生成游戏界面之后,在游戏界面上获取目标交互指令;响应单元,用于响应目标交互指令,在三维游戏场景中执行目标交互事件。
[0200] 该装置通过创建单元10创建待生成的游戏界面的目标图元,通过第一确定单元20基于目标图元确定游戏界面的目标接口,其中,目标接口用于创建游戏界面的三维游戏场景中的界面功能,第二确定单元30通过目标接口确定三维游戏场景中的目标控件的目标信息,通过生成单元40通过目标信息生成游戏界面。也就是说,在界面引擎中创建待生成的游戏界面的目标图元,该界面引擎与目标图元的兼容性好,基于目标图元确定游戏界面的用于创建游戏界面的三维游戏场景中的界面功能的目标接口,进而通过三维游戏场景下的目标控件的目标信息生成游戏界面,实现了基于界面引擎生成三维化的游戏界面的目的,避免了创建的控件无法很好地与界面引擎兼容,解决了游戏界面显示比较单调的问题,进而达到了提高游戏界面显示的丰富性的技术效果。
[0201] 本发明的实施例还提供了一种存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
[0202] 可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(Read‑Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
[0203] 本发明的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
[0204] 可选地,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
[0205] 显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
[0206] 以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。