基于引擎能力的实体功能实现方法、装置及电子设备与流程

文档序号:32742403发布日期:2022-12-30 19:45阅读:24来源:国知局
基于引擎能力的实体功能实现方法、装置及电子设备与流程

1.本公开涉及可视化编程技术领域,尤其涉及一种基于引擎能力的实体功能实现方法、装置及电子设备。


背景技术:

2.在实体组件系统(entity-component-system,ecs)架构下,使用引擎的某种功能的调用顺序为:实体entity-》获取组件component-》使用属性或方法。在软件开发中,引擎中的组件、属性、方法成百上千,如果每个组件、属性等均用代码编写,则会带来极高的开发成本,效率较低。


技术实现要素:

3.为了解决上述技术问题或者至少部分地解决上述技术问题,本公开提供了一种基于引擎能力的实体功能实现方法、装置及电子设备。
4.本公开实施例提供了一种基于引擎能力的实体功能实现方法,所述方法包括:
5.响应于对目标对象名称的触发操作,在配置面板上显示与所述目标对象名称对应的实体节点;
6.搜索预先构建的表示引擎能力的节点名称,响应于对所述节点名称中与所述目标对象名称关联的、且实现目标功能的至少一个目标节点名称的触发操作,在所述配置面板上显示与所述至少一个目标节点名称对应的至少一个目标节点;
7.响应于根据逻辑需求对所述实体节点和各所述目标节点之间的连接触发操作,驱动各所述目标节点运行引擎能力实现所述目标功能。
8.本公开实施例还提供了一种基于引擎能力的实体功能实现装置,所述装置包括:
9.第一显示模块,用于响应于对目标对象名称的触发操作,在配置面板上显示与所述目标对象名称对应的实体节点;
10.第二显示模块,搜索预先构建的表示引擎能力的节点名称,响应于对所述节点名称中与所述目标对象名称关联的、且实现目标功能的至少一个目标节点名称的触发操作,在所述配置面板上显示与所述至少一个目标节点名称对应的至少一个目标节点;
11.驱动模块,用于响应于根据逻辑需求对所述实体节点和各所述目标节点之间的连接触发操作,驱动各所述目标节点运行引擎能力实现所述目标功能。
12.本公开实施例还提供了一种电子设备,所述电子设备包括:处理器;用于存储所述处理器可执行指令的存储器;所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述指令以实现如本公开实施例提供的基于引擎能力的实体功能实现方法。
13.本公开实施例还提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序用于执行如本公开实施例提供的基于引擎能力的实体功能实现方法。
14.本公开实施例提供的技术方案与现有技术相比具有如下优点:本公开实施例提供的基于引擎能力的实体功能实现方案,响应于对目标对象名称的触发操作,在配置面板上
显示与目标对象名称对应的实体节点;搜索预先构建的表示引擎能力的节点名称,响应于对节点名称中与目标对象名称关联的、且实现目标功能的至少一个目标节点名称的触发操作,在配置面板上显示与至少一个目标节点名称对应的至少一个目标节点;响应于根据逻辑需求对实体节点和各目标节点之间的连接触发操作,驱动各目标节点运行引擎能力实现目标功能。采用上述技术方案,只需搜索预先构建的节点名称并触发所需的目标节点名称,即可显示与目标节点名称对应的目标节点,进而根据逻辑需求配置各节点之间的连接关系即可实现目标功能,无需开发人员编写大量的代码来暴露引擎能力,实现了高效率开发,降低了开发成本。
附图说明
15.结合附图并参考以下具体实施方式,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。贯穿附图中,相同或相似的附图标记表示相同或相似的元素。应当理解附图是示意性的,原件和元素不一定按照比例绘制。
16.图1为本公开实施例提供的一种基于引擎能力的实体功能实现方法的流程示意图;
17.图2a为搜索表示引擎能力的节点名称的示例图一;
18.图2b为搜索表示引擎能力的节点名称的示例图二;
19.图2c为搜索表示引擎能力的节点名称的示例图三;
20.图3为本公开实施例提供的另一种基于引擎能力的实体功能实现方法的流程示意图;
21.图4a为生成的组件节点的示例图;
22.图4b为生成的读取属性节点和设置属性节点的示例图;
23.图4c为生成的函数节点的示例图;
24.图5为采用本公开提供的基于引擎能力的实体功能实现方案实现点击屏幕使贴纸位置偏移功能的可视化编程示例图;
25.图6为本公开实施例提供的一种基于引擎能力的实体功能实现装置的结构示意图;
26.图7为本公开实施例提供的另一种基于引擎能力的实体功能实现装置的结构示意图;
27.图8为本公开实施例提供的一种电子设备的结构示意图。
具体实施方式
28.下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
29.应当理解,本公开的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本公开的范围在此方面不受限制。
30.本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。
31.需要注意,本公开中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
32.需要注意,本公开中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
33.为了解决上述问题,本公开实施例提供了一种基于引擎能力的实体功能实现方法,下面结合具体的实施例对该方法进行介绍。
34.图1为本公开实施例提供的一种基于引擎能力的实体功能实现方法的流程示意图,该方法可以由基于引擎能力的实体功能实现装置执行,其中该装置可以采用软件和/或硬件实现,一般可集成在电子设备中。如图1所示,该方法包括:
35.步骤101、响应于对目标对象名称的触发操作,在配置面板上显示与目标对象名称对应的实体节点。
36.其中,目标对象包括实体,目标对象名称即实体名称,目标对象是指实现目标功能需要被操作的对象,比如待实现的目标功能是控制摄像机旋转,则摄像机是目标对象,又比如,待实现的目标功能是控制2维图像的位置移动,则该2维图像是目标对象。
37.本公开实施例中,与目标对象名称对应的实体节点可以预先封装好并显示在配置面板的工具栏区域中,当需要控制该目标对象实现某个功能时,开发人员可以从工具栏区域找到该目标对象的目标对象名称,并对该目标对象名称执行触发操作,基于引擎能力的实体功能实现装置响应于该触发操作,在配置面板上显示出与该目标对象名称对应的实体节点。
38.其中,触发操作包括但不限于鼠标点击、触摸笔点击、手指点击、鼠标拖拽、触摸笔拖拽、手指拖拽等,本公开对此不作限制。
39.步骤102、搜索预先构建的表示引擎能力的节点名称,响应于对节点名称中与目标对象名称关联的、且实现目标功能的至少一个目标节点名称的触发操作,在配置面板上显示与至少一个目标节点名称对应的至少一个目标节点。
40.其中,表示引擎能力的节点名称,是指实现某个功能所需要依赖的可视化节点的名称,一个可视化节点代表了一个具体的引擎能力,可视化节点可以包括组件节点、读取属性节点、函数节点等,其中,组件节点和读取属性节点的引擎能力可以为其他节点提供数据,函数节点的引擎能力可以向用户开放逻辑控制能力以及复杂引擎功能。
41.能够理解的是,对于开发人员而言,实现某个功能需要依赖哪些引擎能力是开发人员所具备的基础知识,本公开实施例中,可以预先构建出表示引擎能力的节点名称,当开发人员需要对目标对象实现目标功能时,可以搜索预先构建的各节点的节点名称,并从各节点名称中确定出至少一个目标节点名称,其中,至少一个目标节点名称是与目标对象关联的、且用于实现目标功能的节点名称。开发人员对至少一个目标节点名称执行触发操作,响应于该触发操作,基于引擎能力的实体功能实现装置在配置面板上显示与每个目标节点名称对应的目标节点。
42.举例而言,假设开发人员需要实现的目标功能是点击屏幕时贴纸位置偏移,则目标对象为贴纸,目标对象名称记为sprite2d。开发人员已知实现该位置偏移功能需要transform2d这个组件控制,则可以搜索预先构建的各节点名称以查找transform2d组件。本公开实施例中,可以采用不同的方式来查找与目标对象名称sprite2d关联的transform2d组件,下面分别进行介绍。
43.作为一种示例,图2a为搜索表示引擎能力的节点名称的示例图一,如图2a所示,因为要查找的是组件,则开发人员可以输入组件component在预先构建的节点名称中的索引字符串“comp”来搜索已有的组件名称,再根据当前的目标对象(sprite2d)和需要搜索的目标组件(transform2d),从搜索结果列表展示的多个节点名称中,找到与目标对象(sprite2d)关联的目标节点名称,如图2a所示,目标节点名称为“comp::gettransform2d(sprite2d)”。
44.作为另一种示例,图2b为搜索表示引擎能力的节点名称的示例图二,如图2b所示,因为要查找的是transform2d组件,则开发人员可以输入字符串“transform2d”或者输入transform2d的部分字符串(比如输入tran或者tran)来搜索,图2b中以输入字符串tran作为示例,再根据当前的目标对象(sprite2d),从搜索结果列表中展示的所有transform2d组件的节点名称中,找到与目标对象(sprite2d)关联的目标节点名称,如图2b所示,目标节点名称为“comp::gettransform2d(sprite2d)”。
45.作为另一种示例,图2c为搜索表示引擎能力的节点名称的示例图三,如图2c所示,开发人员可以通过从目标对象名称对应的实体节点(sprite2d)引出连接线的方式来调出搜索框,则搜索框下方会显示出与该目标对象(sprite2d)关联的所有节点名称,开发人员可以通过从列表中查找,或者在搜索框中输入与待查找的transform2d组件相关的字符串(比如输入transform)进行搜索的方式来查找目标节点名称,如图2c所示,目标节点名称为“comp::gettransform2d(sprite2d)”,实现了聚焦搜索,能够提高搜索效率。
46.之后,当开发人员触发(比如鼠标点击)搜索到的目标节点名称时,在配置面板上显示与该目标节点名称对应的目标节点。
47.步骤103、响应于根据逻辑需求对实体节点和各目标节点之间的连接触发操作,驱动各目标节点运行引擎能力实现目标功能。
48.本公开实施例中,在配置面板上显示了实体节点以及多个目标节点之后,开发人员可以根据逻辑需求配置实体节点与各目标节点之间的连接关系,执行连接触发操作,比如实体节点与目标节点中代表组件的目标节点的输入连接以获取与目标对象关联的组件,代表组件的目标节点的输出与代表属性的目标节点的输入相连,以设置该组件的属性信息,等等。基于引擎能力的实体功能实现装置响应于实体节点与各目标节点之间的连接触发操作,配置好各节点之间的连接关系,进而根据连接关系驱动各目标节点运行引擎能力,从而实现目标功能。
49.本公开实施例的基于引擎能力的实体功能实现方法,响应于对目标对象名称的触发操作,在配置面板上显示与目标对象名称对应的实体节点,搜索预先构建的表示引擎能力的节点名称,响应于对节点名称中与目标对象名称关联的、且实现目标功能的至少一个目标节点名称的触发操作,在配置面板上显示与至少一个目标节点名称对应的至少一个目标节点,进而响应于根据逻辑需求对实体节点和各目标节点之间的连接触发操作,驱动各
目标节点运行引擎能力实现目标功能。采用上述技术方案,只需搜索预先构建的节点名称并触发所需的目标节点名称,即可显示与目标节点名称对应的目标节点,进而根据逻辑需求配置各节点之间的连接关系即可实现目标功能,无需开发人员编写大量的代码来暴露引擎能力,实现了高效率开发,降低了开发成本。
50.在一些实施例中,目标节点包括具有控制触发端口的控制类目标节点和所有端口为数据端口的数据类目标节点,从而,驱动各目标节点运行引擎能力实现目标功能,包括:
51.当控制类目标节点被触发时,获取控制类目标节点所连接的数据类目标节点提供的数据信息;
52.根据控制类目标节点的运行逻辑和数据信息进行处理,输出对应的处理结果以实现目标功能。
53.示例性地,具有控制触发端口的设置属性节点即为一种控制类目标节点,用于获取组件节点的某个属性对应的属性值的读取属性节点则为一种数据类目标节点。
54.本公开实施例中,开发人员执行实体节点与控制类目标节点、数据类目标节点之间的连接触发操作以配置各节点之间的连接关系,基于引擎能力的实体功能实现装置响应于该连接触发操作,配置实体节点、控制类目标节点、数据类目标节点之间的连接关系在控制类目标节点被触发的情况下,控制类目标节点从与之连接的数据类目标节点读取数据信息,并根据自身的运行逻辑和读取的数据信息完成具体的控制任务运行,进而输出对应的处理结果以实现目标功能。
55.举例而言,假设待实现的目标功能是点击屏幕时改变贴纸的大小,则当点击屏幕时,点击屏幕对应的节点向控制类目标节点输入控制流,用于改变贴纸大小的控制类目标节点被触发,此时,控制类目标节点获取控制类目标节点所连接的数据类目标节点提供的数据,以根据控制类目标节点的运行逻辑和获取的数据计算出贴纸的尺寸,进而输出计算获得的贴纸尺寸以实现贴纸尺寸的改变。
56.上述方案中,当控制类目标节点被触发时,获取控制类目标节点所连接的数据类目标节点提供的数据信息,根据控制类目标节点的运行逻辑和数据信息进行处理,输出对应的处理结果以实现目标功能,仅需配置好各目标节点之间的连接关系即可基于各目标节点的引擎能力实现目标功能,避免了手动编写程序代码,提高了开发效率。
57.图3为本公开实施例提供的另一种基于引擎能力的实体功能实现方法的流程示意图,本实施例在上述实施例的基础上,进一步优化了上述基于引擎能力的实体功能实现方法。如图3所示,该方法包括:
58.步骤201、获取保存引擎数据的配置文件。
59.其中,引擎数据可以根据引擎运行实例确定,引擎运行实例依赖于若干个组件、属性、函数方法等数据所运行的引擎能力实现,因此本公开实施例中,引擎数据可以包括但不限于引擎运行实例时所依赖的所有的组件、属性、函数方法等数据。
60.本公开实施例中,配置文件可以是预先生成并存储在本地的,也可以是从服务端获取的,还可以是根据引擎运行时实例生成的,本公开对此不作限制。
61.作为一种可能的实现方式,配置文件可以是实时生成的,获取保存引擎数据的配置文件,包括:通过引擎运行实例获取当前引擎运行时类型信息rtti(runtime type information)属性;根据rtti属性获取rtti对象包含的类名、属性、函数和继承关系,并保
存成json格式的配置文件。
62.其中,继承关系是指引擎的rtti类之间的继承关系,即某个rtti类继承于哪个父类,通过继承关系可以获取继承下来的属性和函数方法。
63.能够理解的是,引擎具有rtti属性,能够获取运行时类型、对象属性等信息,当引擎加载时,通过引擎运行实例获取引擎运行时所有的rtti信息,通过rtti信息可以获得每个rtti类的继承关系,以及rtti类暴露出的属性和函数方法,解析出每个rtti类的相关信息,可以记录在json文件中,保存成json格式的配置文件。
64.作为一种示例,json格式的配置文件中可以包括rtti类的类名、该rtti类继承的父类、该rtti类的属性信息和函数信息。其中,子类可以继承父类的属性和函数方法,属性信息包括但不限于属性名称、属性rtti类型、该属性是否可读可写;函数信息包括但不限于函数名称、函数返回rtti类型、该函数所需参数个数和参数rtti类型。
65.上述技术方案中,由于运行时实例包含了当前引擎版本和运行环境可用的所有组件、属性和函数,因此,通过引擎运行实例获取当前引擎所有的rtti属性,根据rtti属性获取rtti对象包含的类名、属性、函数和继承关系,并保存成json格式的配置文件的方式获取的配置文件,记录了满足当前引擎版本和运行环境的所有引擎数据,在使用时,能够有效避免因调用了已关闭、限制或隔离的功能导致引擎崩溃的风险。并且,将rtti对象包含的类名、属性、函数和继承关系保存成json格式的配置文件,可以实现灵活的功能配置和下发,实现快捷的节点搜索功能。
66.需要说明的是,配置文件为json格式仅作为示例,配置文件还可以是其他格式的文件,比如yaml格式、ini格式等,本公开对此不作限制。
67.作为另一种可能的实现方式,配置文件可以是由服务端随引擎版本下发的,服务端根据当前版本的引擎所能运行的实例,预先生成每个实例对应的配置文件并随引擎版本一起下发至客户端,客户端在安装引擎时将配置文件保存在本地,从而在实现本公开的基于引擎能力的实体功能实现方案时,基于引擎能力的实体功能实现装置可以从本地获取保存有引擎数据的配置文件。
68.步骤202、根据配置文件构建表示引擎能力的节点名称,以及构建与各节点名称对应的用于展示在配置面板上的节点。
69.本公开实施例中,获取了保存引擎数据的配置文件之后,可以根据配置文件,构建出表示引擎能力的节点名称供搜索,以及可以构建出与各节点名称对应的用于展示在配置面板上的节点。
70.作为一种可能的实现方式,可以根据配置文件中记录的类名、属性和函数,生成对应的类节点名称、属性节点名称和函数节点名称,根据配置文件中记录的属性名称、属性类型,生成属性节点名称对应的属性节点,根据函数名称、返回类型和函数的参数,生成函数节点名称对应的函数节点。
71.作为另一种可能的实现方式,当配置文件为json格式时,根据配置文件构建表示引擎能力的节点名称,以及构建与各节点名称对应的用于展示在配置面板上的节点,包括:
72.解析json格式的配置文件以获取rtti对象的类名,根据类名生成组件节点的节点名称;其中,组件节点包括:用于输入组件节点所属实体节点的输入端口和用于输出组件节点相关功能对象的输出端口。
73.其中,组件节点的输出端口的输出与组件节点的功能相关,比如组件节点“comp::gettransform”的功能为获取实体节点的transform组件,则该组件节点的输出端口的输出对象为transform组件。
74.举例而言,假设json格式的配置文件中记录的内容包括:rtti类名为“transform2d”,该rtti类继承的父类为“transform”,该rtti类对应的属性信息中,属性名称为“position”,属性rtti类型为“vector2f”,属性可读且可写,该rtti类对应的函数信息中,函数名称为“setworldposition”、函数返回rtti类型为“vector3f”、该函数所需输入参数个数为2个,且每个输入参数的参数rtti类型均为“vector3f”。解析上述json格式的配置文件可知,rtti类的父类为transform,rtti类的类名为“transform2d”,则根据类名可以生成组件节点的节点名称为“comp::gettransform2d”。为了方便开发人员区分组件所属的实体,可以用rtti对象进行标记,假设上述类名transform2d对应的rtti对象为2d图片,则上述组件节点名称可以记为“comp::gettransform2d(2d图片)”。
75.由于组件节点本身不需要具有逻辑控制功能,只要提供数据即可,这些纯数据节点不提供控制输流输入和输出,因此组件节点不包含控制输入,组件节点输入持有该组件的实体entity(rtti对象),输出想要获取的组件对象。也就是说,组件节点包括一个输入端口和一个输出端口,输入端口用于输入组件节点所属的实体节点,输出端口用于输出该组件相关功能对象,如果entity中不存在该组件则输出为空。图4a为生成的组件节点的示例图,如图4a所示,该组件节点仅包括一个输入端口(entity)和一个输出端口,输入端口的输入数据流为实体节点2d图片,输出端口的输出数据流为该组件transform2d。
76.可选地,解析json格式的配置文件还可以生成属性节点名称和对应的属性节点。具体地,包括:
77.解析json格式的配置文件,根据rtti对象的类及继承关系获取rtti对象的属性信息数组,根据属性信息数组的属性名称生成属性节点的节点名称;其中,属性节点包括读取属性节点和设置属性节点,其中,
78.读取属性节点包括:用于输入读取属性节点所属组件节点的输入端口和用于输出读取属性节点对应属性值的输出端口;
79.设置属性节点包括:用于控制触发的输入端口、用于输入设置属性节点所属组件节点的输入端口、以及用于获取属性值的输入端口、用于控制触发的输出端口和用于输出所设置属性值的输出端口。
80.具体地,属性节点可以根据json格式的配置文件中的属性信息生成,由于记录了rtti类的父类,因此可以知道rtti组件的父类,获取继承下来的属性。根据属性是否可读可写,可以生成读取属性节点(属性可读时)和设置属性节点(属性可写时)。读取属性节点用于为其他节点提供数据,本身不带有逻辑控制功能,因此读取属性节点包括一个输入端口和一个输出端口,输入端口用于输入读取属性节点所属的组件节点,即输入需要获取属性的组件,输出端口用于输出读取属性节点对应的属性值。设置属性节点需要开放给开发人员逻辑控制能力,让开发人员控制节点在何种条件下设置属性,因此设置属性节点具有控制流输入端口和输出端口,设置属性节点需要输入组件和属性数据,并且将该数据作为输出端口的输出数据。因此,设置属性节点包括三个输入端口,分别为用于控制触发的输入端口、用于输入设置属性节点所属组件节点的输入端口、以及用于获取属性值的输入端口,以
及两个输出端口,分别为用于控制触发的输出端口和用于输出所设置属性值的输出端口。当设置属性节点用于控制触发的输入端口有数据流输入时,设置属性节点获取需要设置属性的组件,并将组件对应的属性值设为输入值。
81.继续以前述json格式的配置文件为例,根据该配置文件中记录的属性信息数组,可以确定属性名称为“position”,并能够确定该属性可读可写,解析该配置文件可知该属性数组继承于类名“transform2d”,则可以生成读取属性节点名称为“getposition(transform2d)”,生成设置属性节点名称为“setposition(transform2d)”。并且,根据该配置文件可以生成读取属性节点和设置属性节点,如图4b所示。从图4b可以看出,读取属性节点(getposition)包括一个用于输入读取属性节点所属组件节点的输入端口(transform2d)和一个用于输出读取属性节点对应属性值的输出端口,设置属性节点(setposition)则包括三个输入端口和两个输出端口,输入端口分别为控制端口(trigger)、用于输入设置属性节点所属组件节点的端口(transform2d)和获取属性值端口(用属性值类型vector2f表示)。
82.可选地,解析json格式的配置文件还可以生成函数节点名称和对应的函数节点。具体地,包括:
83.解析json格式的配置文件,根据rtti对象的类及继承关系获取rtti对象的函数信息数组,根据函数信息数组的函数名称生成函数节点的节点名称;其中,函数节点包括:用于控制触发的输入端口、用于输入函数节点所属组件节点或所属实体节点的输入端口、以及用于获取一个或多个函数参数的输入端口、用于控制触发的输出端口、以及用于输出函数返回属性值的输出端口。
84.函数节点需要开放给开发人员逻辑控制能力,让开发人员控制节点在何种条件下执行函数,因此函数节点具有控制流输入端口和输出端口。函数节点需要输入组件和函数参数,输出函数返回值数据。在生成函数节点时,函数节点可以根据json格式的配置文件中的函数信息生成,由于记录了rtti类的父类,因此可以知道rtti组件的父类,获取继承下来的函数方法,函数信息数组中还记录了函数的名字、输入参数和返回值类型,可以根据这些信息生成函数节点端口。函数节点包括多个输入端口,分别为用于控制触发的输入端口、用于输入函数节点所属组件节点或所属实体节点的输入端口、以及用于获取一个或多个函数参数的输入端口,函数节点包括两个输出端口,分别为用于控制触发的输出端口、以及用于输出函数返回属性值的输出端口。当用于控制触发的输入端口被激活时,函数节点根据各个用于获取函数入参的输入端口中输入的参数执行函数,并输出执行结果。
85.继续以前述json格式的配置文件为例,根据该配置文件中记录的函数信息数组,可以确定函数名称为“setworldposition”,解析该配置文件可知该函数数组继承于父类“transform”,则可以生成函数节点名称为“func::setworldposition(transform)”。该函数数组还记录了函数的输出值的数据类型为“vector3f”,函数入参为两个,类型均为“vector3f”,因此可以生成函数节点func::setworldposition如图4c所示。从图4c可以看出,该函数节点包括四个输入端口和两个输出端口,四个输入端口分别为控制端口(trigger)、输入函数节点所属组件节点的端口(用transform表示)和两个参数输入端口(均用参数类型vector3f表示),两个输出端口分别为控制端口(trigger)和函数返回值输出端口(用返回值类vector3f表示)。
86.本公开实施例的方案,通过解析json格式的配置文件生成可视化节点,实现了运用统一的规则生成节点样式,生成格式化的运行代码,避免了大量重复的机械性开发,能够提高开发效率。
87.需要说明的是,步骤201-步骤202的执行顺序在图3中仅作为示例来解释说明本公开,而不能作为对本公开的限制,步骤201-步骤202仅需在步骤204之前执行即可。
88.步骤203、响应于对目标对象名称的触发操作,在配置面板上显示与所述目标对象名称对应的实体节点。
89.需要说明的是,本公开实施例中,对步骤203的描述可以参见前述实施例中有关步骤101的描述,此处不再赘述。
90.步骤204、搜索预先构建的表示引擎能力的节点名称,响应于对节点名称中与目标对象名称关联的、且实现目标功能的至少一个目标节点名称的触发操作,在配置面板上显示与至少一个目标节点名称对应的至少一个目标节点。
91.需要说明的是,本公开实施例中,对搜索预先构建的表示引擎能力的节点名称的描述可以参见前述实施例的相关内容,此处不再赘述。
92.本公开实施例中,解析配置文件生成的原子化节点可以分为三类,组件节点、属性节点(包括设置属性节点和读取属性节点)以及函数节点,则响应于对节点名称中与目标对象名称关联的、且实现目标功能的至少一个目标节点名称的触发操作,在配置面板上显示与至少一个目标节点名称对应的至少一个目标节点,包括:
93.响应于对节点名称中与目标对象名称关联的、用于实现目标功能的目标组件节点名称的触发操作,在配置面板上显示与目标组件节点名称对应的目标组件节点;
94.响应于对节点名称中与目标组件节点名称关联的、用于实现目标功能的目标属性节点名称,和/或,目标函数节点名称的触发操作,在配置面板上显示与目标属性节点名称对应的目标属性节点,和/或,显示与目标函数节点名称对应的目标函数节点。
95.本公开实施例中,当开发人员需要实现某个功能时,可以搜索预先构建的表示引擎能力的节点名称,查找出与目标对象名称关联的、用于实现目标功能的目标组件节点名称并执行触发操作,基于引擎能力的实体功能实现装置响应于该触发操作,在配置面板上显示目标组件节点,继续查找与目标组件节点名称关联的、且用于实现目标功能的目标属性节点名称和/或目标函数节点名称并执行触发操作,基于引擎能力的实体功能实现装置响应于该触发操作,在配置面板上显示目标属性节点和/或目标函数节点。
96.步骤205、响应于根据逻辑需求对实体节点和各目标节点之间的连接触发操作,驱动各目标节点运行引擎能力实现目标功能。
97.本公开实施例中,配置面板中显示了实现目标功能所需的各目标节点之后,开发人员可以根据逻辑需求配置实体节点和各目标节点的连接关系,执行连接触发操作,基于引擎能力的实体功能实现装置响应于该连接触发操作,驱动各目标节点运行引擎能力实现目标功能。
98.能够理解的是,不同的目标节点运行的引擎能力不同,本公开实施例中,驱动各目标节点运行引擎能力,包括以下至少一种:
99.组件节点获取所属实体,输出实体的组件对象;
100.读取属性节点获取所属组件,输出组件当前的属性值;
101.设置属性节点的控制端口被触发时,获取需要设置属性的组件,并设置组件的属性值;
102.函数节点的输入控制端口被触发时,根据函数参数执行函数输出返回值。
103.本公开实施例中,驱动各目标节点运行引擎能力时,组件节点用于获取所属实体,并输出实体的组件对象,读取属性节点获取所属组件,并输出所获取组件当前的属性值,对于设置属性节点,当设置属性节点的控制端口被触发时,获取需要设置属性的组件,并设置所获取组件的属性值,对于函数节点,当函数节点的输入控制端口被触发时,根据函数节点获取的函数参数执行对应的函数,并输出返回值。
104.上述技术方案中,通过开发人员执行连接触发操作来配置各目标节点的连接关系,响应于连接触发操作驱动各目标节点运行引擎能力以实现目标功能,无需编写代码即完成了引擎能力的暴露,实现了运行时控制的能力,提高了开发效率。
105.本公开实施例提供的基于引擎能力的实体功能实现方法,通过获取保存引擎数据的配置文件,根据配置文件构建表示引擎能力的节点名称,以及构建与各节点名称对应的用于展示在配置面板上的节点,进而通过搜索各节点名称,响应于对节点名称中与目标对象名称关联的、且实现目标功能的至少一个目标节点名称的触发操作,在配置面板上显示与至少一个目标节点名称对应的至少一个目标节点,响应于根据逻辑需求对实体节点和各目标节点之间的连接触发操作,驱动各目标节点运行引擎能力实现目标功能,由此,实现了可视化编程,将引擎实例中所需的组件、属性和函数反射成原子化节点,通过连线配置运行时逻辑,无需手动编写代码即可暴露引擎能力,实现了特效生产。
106.为了便于理解本公开提供的基于引擎能力的实体功能实现方案,下面举例进行说明。
107.图5为采用本公开提供的基于引擎能力的实体功能实现方案实现点击屏幕使贴纸位置偏移功能的可视化编程示例图。如图5所示,开发人员想要实现的目标功能是点击屏幕,让播放中的贴纸位置偏移(x:100,y:200),实现该功能的可视化编程的配置步骤为:因为需要设置的是贴纸的位置属性,则目标对象名称为贴纸(2d图片),因此可以先从特效信息面板中拖入实体节点,该实体节点的名称为2d图片,其中,该实体节点是预先封装好并展示在特效信息面板中的,可以直接通过拖拽的方式显示在配置面板上,无需搜索。开发人员知悉,设置的位置属性由transform2d这个组件控制,因此在配置面板上搜索并查找transform2d,添加组件节点“comp::gettransform2d”,并将实体节点(2d图片)与组件节点comp::gettransform2d的entity端口连接。想要实现贴纸位置偏移,则需要获取贴纸的当前位置,可以通过getposition这一读取属性节点从组件transform2d中获取贴纸的当前位置;添加一个数值观测节点,并输入观测值x为100,y为200;通过加法运算节点将贴纸的当前位置与数值观测节点输入的观测值相加,得到想要设置的终点位置,其中,加法运算节点中,数值a为获取的当前位置,数值b为输入的观测值。通过搜索添加setposition这一设置属性节点,将组件节点comp::gettransform2d的输出端口与setposition节点的用于表示所属组件的输入端口(transform2d)连接,将加法运算节点输出的终点位置数据连入setposition节点的用于获取属性值的输入端口(vector2f),并添加一个点击屏幕控制节点,将点击屏幕控制节点与setposition节点的控制流输入端口(trigger)连接,由此,配置完成各节点的连接关系。图5中,点击屏幕控制节点、数值观测节点和加法运算节点可以是
预先封装好的用于实现脚本功能的节点,可以直接拖拽使用,无需进行搜索。当开发人员点击屏幕时,setposition节点被激活,其回溯寻找节点的数据输入,得到transform2d组件和加法运算节点输出的终点位置,之后设置自身的位置属性,将贴纸位置从原位置(x:100,y:200)处移动至终点位置(x:200,y:400)处,实现了点击屏幕时将贴纸位置偏移(x:100,y:200)的功能。由此,无需开发人员手动编写代码,即实现了点击屏幕使贴纸位置偏移的功能。
108.图6为本公开实施例提供的一种基于引擎能力的实体功能实现装置的结构示意图,该装置可由软件和/或硬件实现,一般可集成在电子设备中。如图6所示,该基于引擎能力的实体功能实现装置包括:
109.第一显示模块301,用于响应于对目标对象名称的触发操作,在配置面板上显示与所述目标对象名称对应的实体节点;
110.第二显示模块302,搜索预先构建的表示引擎能力的节点名称,响应于对所述节点名称中与所述目标对象名称关联的、且实现目标功能的至少一个目标节点名称的触发操作,在所述配置面板上显示与所述至少一个目标节点名称对应的至少一个目标节点;
111.驱动模块303,用于响应于根据逻辑需求对所述实体节点和各所述目标节点之间的连接触发操作,驱动各所述目标节点运行引擎能力实现所述目标功能。
112.可选地,所述目标节点包括具有控制触发端口的控制类目标节点和所有端口为数据端口的数据类目标节点,所述驱动模块303具体用于:
113.当所述控制类目标节点被触发时,获取所述控制类目标节点所连接的所述数据类目标节点提供的数据信息;
114.根据所述控制类目标节点的运行逻辑和所述数据信息进行处理,输出对应的处理结果以实现所述目标功能。
115.可选地,如图7所示,该基于引擎能力的实体功能实现装置30还包括:
116.获取模块304,用于获取保存引擎数据的配置文件;
117.构建模块305,用于根据所述配置文件构建所述表示引擎能力的节点名称,以及构建与各节点名称对应的用于展示在所述配置面板上的节点。
118.可选地,获取模块304具体用于:
119.通过引擎运行实例获取当前引擎运行时类型信息rtti属性;
120.根据所述rtti属性获取rtti对象包含的类名、属性、函数和继承关系,并保存成json格式的配置文件。
121.可选地,所述构建模块305具体用于:
122.解析所述json格式的配置文件以获取所述rtti对象的类名,根据所述类名生成组件节点的节点名称;所述组件节点包括:用于输入所述组件节点所属实体节点的输入端口和用于输出所述组件节点相关功能对象的输出端口。
123.可选地,所述构建模块305还用于:
124.解析所述json格式的配置文件,根据所述rtti对象的类及继承关系获取所述rtti对象的属性信息数组,根据所述属性信息数组的属性名称生成属性节点的节点名称;其中,所述属性节点包括读取属性节点和设置属性节点,其中,
125.所述读取属性节点包括:用于输入所述读取属性节点所属组件节点的输入端口和
用于输出所述读取属性节点对应属性值的输出端口;
126.所述设置属性节点包括:用于控制触发的输入端口、用于输入所述设置属性节点所属组件节点的输入端口、以及用于获取属性值的输入端口、用于控制触发的输出端口和用于输出所设置属性值的输出端口。
127.可选地,所述构建模块305还用于:
128.解析所述json格式的配置文件,根据所述rtti对象的类及继承关系获取rtti对象的函数信息数组,根据所述函数信息数组的函数名称生成函数节点的节点名称;其中,所述函数节点包括:用于控制触发的输入端口、用于输入所述函数节点所属组件节点或所属实体节点的输入端口、以及用于获取一个或多个函数参数的输入端口、用于控制触发的输出端口、以及用于输出函数返回属性值的输出端口。
129.可选地,所述第二显示模块302具体用于:
130.响应于对所述节点名称中与所述目标对象名称关联的、用于实现目标功能的目标组件节点名称的触发操作,在所述配置面板上显示与所述目标组件节点名称对应的目标组件节点;
131.响应于对所述节点名称中与所述目标组件节点名称关联的、用于实现所述目标功能的目标属性节点名称,和/或,目标函数节点名称的触发操作,在所述配置面板上显示与所述目标属性节点名称对应的目标属性节点,和/或,显示与所述目标函数节点名称对应的目标函数节点。
132.可选地,所述驱动模块303具体用于:
133.所述组件节点获取所属实体,输出所述实体的组件对象;
134.所述读取属性节点获取所属组件,输出所述组件当前的属性值;
135.所述设置属性节点的控制端口被触发时,获取需要设置属性的组件,并设置所述组件的属性值;
136.所述函数节点的输入控制端口被触发时,根据函数参数执行函数输出返回值。
137.本公开实施例所提供的基于引擎能力的实体功能实现装置可执行本公开任意实施例所提供的基于引擎能力的实体功能实现方法,具备执行方法相应的功能模块和有益效果。
138.为了实现上述实施例,本公开还提出一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被处理器执行时实现上述实施例中的基于引擎能力的实体功能实现方法。
139.图8为本公开实施例提供的一种电子设备的结构示意图。
140.下面具体参考图8,其示出了适于用来实现本公开实施例中的电子设备400的结构示意图。本公开实施例中的电子设备400可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、pda(个人数字助理)、pad(平板电脑)、pmp(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字tv、台式计算机等等的固定终端。图8示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
141.如图8所示,电子设备400可以包括处理装置(例如中央处理器、图形处理器等)401,其可以根据存储在只读存储器(rom)402中的程序或者从存储装置408加载到随机访问存储器(ram)403中的程序而执行各种适当的动作和处理。在ram 403中,还存储有电子设备
400操作所需的各种程序和数据。处理装置401、rom 402以及ram403通过总线404彼此相连。输入/输出(i/o)接口405也连接至总线404。
142.通常,以下装置可以连接至i/o接口405:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置406;包括例如液晶显示器(lcd)、扬声器、振动器等的输出装置407;包括例如磁带、硬盘等的存储装置408;以及通信装置409。通信装置409可以允许电子设备400与其他设备进行无线或有线通信以交换数据。虽然图8示出了具有各种装置的电子设备400,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
143.特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在非暂态计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置409从网络上被下载和安装,或者从存储装置408被安装,或者从rom 402被安装。在该计算机程序被处理装置401执行时,执行本公开实施例的基于引擎能力的实体功能实现方法中限定的上述功能。
144.需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、rf(射频)等等,或者上述的任意合适的组合。
145.在一些实施方式中,客户端、服务器可以利用诸如http(hypertext transfer protocol,超文本传输协议)之类的任何当前已知或未来研发的网络协议进行通信,并且可以与任意形式或介质的数字数据通信(例如,通信网络)互连。通信网络的示例包括局域网(“lan”),广域网(“wan”),网际网(例如,互联网)以及端对端网络(例如,ad hoc端对端网络),以及任何当前已知或未来研发的网络。
146.上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
147.上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:响应于对目标对象名称的触发操作,在配置面板上显示与所述目标对象名称对应的实体节点;搜索预先构建的表示引擎能力的节点名称,响应于对
所述节点名称中与所述目标对象名称关联的、且实现目标功能的至少一个目标节点名称的触发操作,在所述配置面板上显示与所述至少一个目标节点名称对应的至少一个目标节点;响应于根据逻辑需求对所述实体节点和各所述目标节点之间的连接触发操作,驱动各所述目标节点运行引擎能力实现所述目标功能。
148.可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括但不限于面向对象的程序设计语言—诸如java、smalltalk、c++,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
149.附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
150.描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元的名称在某种情况下并不构成对该单元本身的限定。
151.本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、片上系统(soc)、复杂可编程逻辑设备(cpld)等等。
152.在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
153.根据本公开的一个或多个实施例,本公开提供了一种基于引擎能力的实体功能实现方法,包括:
154.响应于对目标对象名称的触发操作,在配置面板上显示与所述目标对象名称对应的实体节点;
155.搜索预先构建的表示引擎能力的节点名称,响应于对所述节点名称中与所述目标对象名称关联的、且实现目标功能的至少一个目标节点名称的触发操作,在所述配置面板上显示与所述至少一个目标节点名称对应的至少一个目标节点;
156.响应于根据逻辑需求对所述实体节点和各所述目标节点之间的连接触发操作,驱动各所述目标节点运行引擎能力实现所述目标功能。
157.根据本公开的一个或多个实施例,本公开提供的基于引擎能力的实体功能实现方法中,所述目标节点包括具有控制触发端口的控制类目标节点和所有端口为数据端口的数据类目标节点,所述驱动各所述目标节点运行引擎能力实现所述目标功能,包括:
158.当所述控制类目标节点被触发时,获取所述控制类目标节点所连接的所述数据类目标节点提供的数据信息;
159.根据所述控制类目标节点的运行逻辑和所述数据信息进行处理,输出对应的处理结果以实现所述目标功能。
160.根据本公开的一个或多个实施例,本公开提供的基于引擎能力的实体功能实现方法中,在所述搜索预先构建的表示引擎能力的节点名称之前,还包括:
161.获取保存引擎数据的配置文件;
162.根据所述配置文件构建所述表示引擎能力的节点名称,以及构建与各节点名称对应的用于展示在所述配置面板上的节点。
163.根据本公开的一个或多个实施例,本公开提供的基于引擎能力的实体功能实现方法中,所述获取保存引擎数据的配置文件,包括:
164.通过引擎运行实例获取当前引擎运行时类型信息rtti属性;
165.根据所述rtti属性获取rtti对象包含的类名、属性、函数和继承关系,并保存成json格式的配置文件。
166.根据本公开的一个或多个实施例,本公开提供的基于引擎能力的实体功能实现方法中,所述根据所述配置文件构建所述表示引擎能力的节点名称,以及构建与各节点名称对应的用于展示在所述配置面板上的节点,包括:
167.解析所述json格式的配置文件以获取所述rtti对象的类名,根据所述类名生成组件节点的节点名称;其中,所述组件节点包括:用于输入所述组件节点所属实体节点的输入端口和用于输出所述组件节点相关功能对象的输出端口。
168.根据本公开的一个或多个实施例,本公开提供的基于引擎能力的实体功能实现方法中,还包括:
169.解析所述json格式的配置文件,根据所述rtti对象的类及继承关系获取所述rtti对象的属性信息数组,根据所述属性信息数组的属性名称生成属性节点的节点名称;其中,所述属性节点包括读取属性节点和设置属性节点,其中,
170.所述读取属性节点包括:用于输入所述读取属性节点所属组件节点的输入端口和用于输出所述读取属性节点对应属性值的输出端口;
171.所述设置属性节点包括:用于控制触发的输入端口、用于输入所述设置属性节点所属组件节点的输入端口、以及用于获取属性值的输入端口、用于控制触发的输出端口和用于输出所设置属性值的输出端口。
172.根据本公开的一个或多个实施例,本公开提供的基于引擎能力的实体功能实现方
法中,还包括:
173.解析所述json格式的配置文件,根据所述rtti对象的类及继承关系获取rtti对象的函数信息数组,根据所述函数信息数组的函数名称生成函数节点的节点名称;其中,所述函数节点包括:用于控制触发的输入端口、用于输入所述函数节点所属组件节点或所属实体节点的输入端口、以及用于获取一个或多个函数参数的输入端口、用于控制触发的输出端口、以及用于输出函数返回属性值的输出端口。
174.根据本公开的一个或多个实施例,本公开提供的基于引擎能力的实体功能实现方法中,所述响应于对所述节点名称中与所述目标对象名称关联的、且实现目标功能的至少一个目标节点名称的触发操作,在所述配置面板上显示与所述至少一个目标节点名称对应的至少一个目标节点,包括:
175.响应于对所述节点名称中与所述目标对象名称关联的、用于实现目标功能的目标组件节点名称的触发操作,在所述配置面板上显示与所述目标组件节点名称对应的目标组件节点;
176.响应于对所述节点名称中与所述目标组件节点名称关联的、用于实现所述目标功能的目标属性节点名称,和/或,目标函数节点名称的触发操作,在所述配置面板上显示与所述目标属性节点名称对应的目标属性节点,和/或,显示与所述目标函数节点名称对应的目标函数节点。
177.根据本公开的一个或多个实施例,本公开提供的基于引擎能力的实体功能实现方法中,所述驱动各所述目标节点运行引擎能力实现所述目标功能,包括以下至少一种:
178.所述组件节点获取所属实体,输出所述实体的组件对象;
179.所述读取属性节点获取所属组件,输出所述组件当前的属性值;
180.所述设置属性节点的控制端口被触发时,获取需要设置属性的组件,并设置所述组件的属性值;
181.所述函数节点的输入控制端口被触发时,根据函数参数执行函数输出返回值。
182.根据本公开的一个或多个实施例,本公开提供了一种基于引擎能力的实体功能实现装置,包括:
183.第一显示模块,用于响应于对目标对象名称的触发操作,在配置面板上显示与所述目标对象名称对应的实体节点;
184.第二显示模块,搜索预先构建的表示引擎能力的节点名称,响应于对所述节点名称中与所述目标对象名称关联的、且实现目标功能的至少一个目标节点名称的触发操作,在所述配置面板上显示与所述至少一个目标节点名称对应的至少一个目标节点;
185.驱动模块,用于响应于根据逻辑需求对所述实体节点和各所述目标节点之间的连接触发操作,驱动各所述目标节点运行引擎能力实现所述目标功能。
186.根据本公开的一个或多个实施例,本公开提供的基于引擎能力的实体功能实现装置中,所述目标节点包括具有控制触发端口的控制类目标节点和所有端口为数据端口的数据类目标节点,所述驱动模块具体用于:
187.当所述控制类目标节点被触发时,获取所述控制类目标节点所连接的所述数据类目标节点提供的数据信息;
188.根据所述控制类目标节点的运行逻辑和所述数据信息进行处理,输出对应的处理
结果以实现所述目标功能。
189.根据本公开的一个或多个实施例,本公开提供的基于引擎能力的实体功能实现装置中,还包括:
190.获取模块,用于获取保存引擎数据的配置文件;
191.构建模块,用于根据所述配置文件构建所述表示引擎能力的节点名称,以及构建与各节点名称对应的用于展示在所述配置面板上的节点。
192.根据本公开的一个或多个实施例,本公开提供的基于引擎能力的实体功能实现装置中,所述获取模块具体用于:
193.通过引擎运行实例获取当前引擎运行时类型信息rtti属性;
194.根据所述rtti属性获取rtti对象包含的类名、属性、函数和继承关系,并保存成json格式的配置文件。
195.根据本公开的一个或多个实施例,本公开提供的基于引擎能力的实体功能实现装置中,所述构建模块具体用于:
196.解析所述json格式的配置文件以获取所述rtti对象的类名,根据所述类名生成组件节点的节点名称;其中,所述组件节点包括:用于输入所述组件节点所属实体节点的输入端口和用于输出所述组件节点相关功能对象的输出端口。
197.根据本公开的一个或多个实施例,本公开提供的基于引擎能力的实体功能实现装置中,所述构建模块还用于:
198.解析所述json格式的配置文件,根据所述rtti对象的类及继承关系获取所述rtti对象的属性信息数组,根据所述属性信息数组的属性名称生成属性节点的节点名称;其中,所述属性节点包括读取属性节点和设置属性节点,其中,
199.所述读取属性节点包括:用于输入所述读取属性节点所属组件节点的输入端口和用于输出所述读取属性节点对应属性值的输出端口;
200.所述设置属性节点包括:用于控制触发的输入端口、用于输入所述设置属性节点所属组件节点的输入端口、以及用于获取属性值的输入端口、用于控制触发的输出端口和用于输出所设置属性值的输出端口。
201.根据本公开的一个或多个实施例,本公开提供的基于引擎能力的实体功能实现装置中,所述构建模块还用于:
202.解析所述json格式的配置文件,根据所述rtti对象的类及继承关系获取rtti对象的函数信息数组,根据所述函数信息数组的函数名称生成函数节点的节点名称;其中,所述函数节点包括:用于控制触发的输入端口、用于输入所述函数节点所属组件节点或所属实体节点的输入端口、以及用于获取一个或多个函数参数的输入端口、用于控制触发的输出端口、以及用于输出函数返回属性值的输出端口。
203.根据本公开的一个或多个实施例,本公开提供的基于引擎能力的实体功能实现装置中,所述第二显示模块具体用于:
204.响应于对所述节点名称中与所述目标对象名称关联的、用于实现目标功能的目标组件节点名称的触发操作,在所述配置面板上显示与所述目标组件节点名称对应的目标组件节点;
205.响应于对所述节点名称中与所述目标组件节点名称关联的、用于实现所述目标功
能的目标属性节点名称,和/或,目标函数节点名称的触发操作,在所述配置面板上显示与所述目标属性节点名称对应的目标属性节点,和/或,显示与所述目标函数节点名称对应的目标函数节点。
206.根据本公开的一个或多个实施例,本公开提供的基于引擎能力的实体功能实现装置中,所述驱动模块具体用于:
207.所述组件节点获取所属实体,输出所述实体的组件对象;
208.所述读取属性节点获取所属组件,输出所述组件当前的属性值;
209.所述设置属性节点的控制端口被触发时,获取需要设置属性的组件,并设置所述组件的属性值;
210.所述函数节点的输入控制端口被触发时,根据函数参数执行函数输出返回值。
211.根据本公开的一个或多个实施例,本公开提供了一种电子设备,包括:
212.处理器;
213.用于存储所述处理器可执行指令的存储器;
214.所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述指令以实现如本公开提供的任一所述的基于引擎能力的实体功能实现方法。
215.根据本公开的一个或多个实施例,本公开提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序用于执行如本公开提供的任一所述的基于引擎能力的实体功能实现方法。
216.以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
217.此外,虽然采用特定次序描绘了各操作,但是这不应当理解为要求这些操作以所示出的特定次序或以顺序次序执行来执行。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实施例中。相反地,在单个实施例的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实施例中。
218.尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1