一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

可视化编程的代码处理方法、装置、系统与流程

2021-11-05 21:07:00 来源:中国专利 TAG:


1.本技术涉及计算机技术领域,尤其涉及一种可视化编程的代码处理方法、装置、系统。


背景技术:

2.可视化编程(蓝图)具有上手快、学习门槛低、图形可视化等特点,被广泛应用于非编程专业的程序设计和开发领域,并对这些领域的技术人员来说具有很高的使用价值、还可以减少沟通和人力成本、缩短设计和开发周期。
3.技术人员在使用某个引擎(例如,虚幻引擎)开发主机大作时,常用到蓝图的相关功能,也即该蓝图可以在虚幻引擎中打开。
4.在实际应用中,由于蓝图只能通过虚幻引擎打开,无法脱离该虚幻引擎自动化解析,进而无法为其他开发流程提供使用的价值,从而无法满足各种开发所需。


技术实现要素:

5.本技术实施例提供一种可视化编程的代码处理方法、装置、系统,用以解决由于可视化代码只能通过适配引擎打开,无法脱离引擎自动化解析,进而无法为其他开发流程提供使用的价值,从而无法满足各种开发所需等问题。
6.第一方面,本技术实施例提供一种可视化编程的代码处理方法,应用于计算机设备,所述方法包括:
7.从引擎层获取视图的执行流数据,所述执行流数据包括:代码视图和绘制所述代码视图对应的功能数据;
8.对所述代码视图进行数据结构拆解,得到子代码数据,所述子代码数据包括:至少一个结点的信息、所述视图的标识、以及所述视图关联的其他视图的标识;
9.根据预设的数据结构,将所述子代码数据和所述功能数据存储至内存层,得到转存后的数据;
10.将所述转存后的数据按照预设格式,转化为硬盘数据存储至存储层。
11.在第一方面一种可能的设计中,每个结点的信息包括:至少一个引脚信息、所述结点的标识和与所述结点关联的其他结点的标识,各个引脚信息包括:至少一个引脚的标识和与所述至少一个引脚关联的其他引脚的标识。
12.在第一方面另一种可能的设计中,所述预设的数据结构包括:执行流数据表格,所述执行流数据表格包括:所述视图的数据区域和与所述视图关联的功能的数据区域,所述视图的数据区域包括:至少一个结点区域,所述结点区域包括:至少一个引脚区域,与所述视图关联的功能数据区域包括至少一个引脚的引脚信息。
13.在第一方面再一种可能的设计中,所述从引擎层获取视图的执行流数据,包括:
14.从所述引擎层的所述视图对应的资源数据中获取所述视图的执行流数据。
15.在该种可能的设计中,所述从所述引擎层的所述视图对应的资源数据中获取所述
视图的执行流数据,包括:
16.从所述引擎层获取采用树结构存储的新版本视图对应的第一资源数据和旧版本视图对应的第二资源数据,所述代码视图包括所述第一资源数据和第二资源数据;
17.获取所述第一资源数据和所述第二资源数据中的不同部分作为所述功能数据。
18.在第一方面还一种可能的设计中,所述根据预设的数据结构,将所述子代码数据和所述功能数据存储至内存层,得到转存后的数据,包括:
19.在所述内存层中建立结构为所述预设的数据结构的数据标的;
20.对所述子代码数据和所述功能数据进行赋值重载处理,得到提取后的执行流数据;
21.将所述提取后的执行流数据,根据所述数据结构拷贝至所述数据标的中,得到所述转存后的数据。
22.在第一方面又一种可能的设计中,所述预设格式包括:json格式,则所述将所述转存后的数据按照预设格式,转化为硬盘数据存储至存储层,包括:
23.采用序列化方法将所述转存后的数据转换成为json格式的所述硬盘数据;
24.将所述json格式的所述硬盘数据存储至所述存储层。
25.第二方面,本技术实施例提供一种可视化编程的代码处理装置,应用于计算机设备,所述装置包括:获取模块、处理模块、存储模块;
26.所述获取模块,用于从引擎层获取视图的执行流数据,所述执行流数据包括:代码视图和绘制所述代码视图对应的功能数据;
27.所述处理模块,用于对所述代码视图进行数据结构拆解,得到子代码数据,所述子代码数据包括:至少一个结点的信息、所述视图的标识、以及所述视图关联的其他视图的标识;
28.所述存储模块,用于根据预设的数据结构,将所述子代码数据和所述功能数据存储至内存层,得到转存后的数据,还将所述转存后的数据按照预设格式,转化为硬盘数据存储至存储层。
29.在第二方面一种可能的设计中,每个结点的信息包括:至少一个引脚信息、所述结点的标识和与所述结点关联的其他结点的标识,各个引脚信息包括:至少一个引脚的标识和与所述至少一个引脚关联的其他引脚的标识。
30.在第二方面另一种可能的设计中,所述预设的数据结构包括:执行流数据表格,所述执行流数据表格包括:所述视图的数据区域和与所述视图关联的功能数据区域,所述视图的数据区域包括:至少一个结点区域,所述结点区域包括:至少一个引脚区域,与所述视图关联的功能数据区域包括至少一个引脚的引脚信息。
31.在第二方面再一种可能的设计中,所述获取模块,具体用于:
32.从所述引擎层的所述视图对应的资源数据中获取所述视图的执行流数据。
33.在该种可能的设计中,所述获取模块,具体用于:
34.从所述引擎层获取采用树结构存储的新版本视图对应的第一资源数据和旧版本视图对应的第二资源数据,所述代码视图包括所述第一资源数据和第二资源数据;
35.获取所述第一资源数据和所述第二资源数据中的不同部分作为所述功能数据。
36.在第二方面还一种可能的设计中,所述存储模块,根据预设的数据结构,将所述子
代码数据和所述功能数据存储至内存层,得到转存后的数据,具体用于:
37.在所述内存层中建立结构为所述预设的数据结构的数据标的;
38.对所述子代码数据和所述功能数据进行赋值重载处理,得到提取后的执行流数据;
39.将所述提取后的执行流数据,根据所述数据结构拷贝至所述数据标的中,得到所述转存后的数据。
40.在第二方面又一种可能的设计中,所述预设格式包括:json格式,则所述存储模块,将所述转存后的数据按照预设格式,转化为硬盘数据存储至存储层,具体用于:
41.采用序列化方法将所述转存后的数据转换成为json格式的所述硬盘数据;
42.将所述json格式的所述硬盘数据存储至所述存储层。
43.第三方面,本技术实施例提供一种可视化编程的代码处理系统,包括:用户层、引擎层、内存层和存储层;
44.所述用户层,用于显示视图;
45.所述引擎层,用于提供所述视图对应的资源数据中的执行流数据,所述执行流数据包括:代码视图和绘制所述代码视图对应的功能数据,其中,在对所述代码视图进行数据结构拆解,得到子代码数据;
46.所述内存层,用于存储根据预设的数据结构对所述子代码数据和所述功能数据进行转存,得到的转存后的数据;
47.所述存储层,用于存储将所述转存后的数据按照预设格式转化后的硬盘数据。
48.第四方面,本技术实施例提供一种计算机设备,包括:处理器、存储器;
49.所述存储器存储计算机执行指令;
50.所述处理器执行所述计算机执行指令,使得所述计算机设备执行如上述第一方面及各种可能的设计中所述的可视化编程的代码处理方法。
51.第五方面,本技术实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如上述第一方面及各种可能的设计中所述的可视化编程的代码处理方法。
52.第六方面,本技术实施例提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时用于实现如上述第一方面及各种可能的设计中所述的可视化编程的代码处理方法。
53.本技术实施例提供的可视化编程的代码处理方法、装置、系统,该方法中,从引擎层获取视图的执行流数据,执行流数据包括:代码视图和绘制代码视图对应的功能数据,并对代码视图进行数据结构拆解,得到子代码数据,之后根据预设的数据结构,将子代码数据和功能数据存储至内存层,得到转存后的数据,最后将转存后的数据按照预设格式,转化为硬盘数据存储至存储层。该技术方案中,将引擎层的数据拆解后,按照自定义的数据结构存放拆解后的数据,从而实现了对蓝图代码的提取,为用于其他开发流程提供了明文数据基础。
附图说明
54.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施
例,并与说明书一起用于解释本公开的原理。
55.图1为本技术实施例提供的可视化编程的代码处理系统的框架结构示意图;
56.图2为本技术实施例提供的可视化编程的代码处理方法实施例一的流程示意图;
57.图3为本技术实施例提供的执行流数据获取示意图;
58.图4为本技术实施例提供的数据结构拆解示意图;
59.图5为本技术实施例提供的赋值重载处理示意图;
60.图6为本技术实施例提供的数据存储示意图;
61.图7为本技术实施例提供的预设的数据结构示意图;
62.图8为本技术实施例提供的格式存储示意图;
63.图9为本技术实施例提供的可视化编程的代码处理装置的示意图;
64.图10为本技术实施例提供的计算机设备的结构示意图。
65.通过上述附图,已示出本公开明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本公开构思的范围,而是通过参考特定实施例为本领域技术人员说明本公开的概念。
具体实施方式
66.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
67.在介绍本技术的实施例之前,首先对本技术涉及的专业名词进行解释说明:
68.虚幻4引擎(unreal engine 4,ue 4):一款开源、商业收费、学习免费的游戏引擎,目前已是第4代,其功能十分强大,主要用来制作主机游戏;
69.ue资源文件(uasset):ue自带的资源文件格式,以二进制形式存储所有类型的资源,只有ue本身可以解析;
70.js对象简谱(javascript object notation,json):一种轻量级的数据交换格式,采用完全独立于编程语言的文本格式来存储和表示数据,易于用户读写和机器解析,可有效的提升网络传输效率;
71.差异文件(difference file,diff):一种可执行的工具程序,用来对比两个文件之间的不同,并将不同的信息记录并显示出来,从而产生的文件就是diff文件;
72.源码控制系统(source code control system,sccs):指代一套管控各种不同版本源代码的系统方案,方便软件的开发和用户协同工作;
73.subversion(svn)):开放源代码的版本控制系统,通过采用分支管理系统的高效管理,简而言之就是用于多个人共同开发同一个项目,实现共享资源和集中式的管理;
74.perforce(p4):一款版本管理工具,具有轻便快速特点,支持图形用户界面(graphical user interface,gui)、命令行等多种使用方式。
75.其次对本技术涉及的背景技术进行解释说明:
76.随着可视化编程思想的迅速发展,并广泛应用于艺术、程序、工业、航天、医疗等设计和开发领域。各个商业引擎也都大力支持和推荐可视化编程,如ue 4(虚幻引擎)、unity、
以及引擎messiah(弥赛亚)等也在开发和支持可视化编程。
77.其中,使用ue 4引擎开发的各种3a游戏(triple a game)主机大作普遍都用到了可视化编程(蓝图)。
78.可视化编程具有图形可视、学习门槛低、上手快的特点,对非编程专业的设计或开发人员来说有很高的实用价值,可以减少沟通和人力成本,缩短设计和开发周期。但同时也存在一些缺点,如移植性差、协作难度大、不具通用性等,其中,可视化代码和引擎强绑定是影响其应用价值和发展的一大弊病。
79.以ue 4为例,其蓝图功能强大,使用方便,但蓝图本身只能使用ue 4引擎打开,无法脱离引擎进行自动化解析,与我司传统的开发流程存在冲突,常用工具也无法使用,大大影响了项目开发效率。因蓝图仅在引擎编辑器内才可查看diff,并且不提供merge辅助功能,只能由开发人员手动完成,维护成本高,无法支持多分支开发,直接影响到项目开发模式,导致项目版本稳定性极差,开发人员维护成本被迫提升。对大多数的ue 4项目而言,都需避免使用蓝图进行开发,期望用文本编程来替代或绕过ue 4的蓝图功能。
80.但蓝图本身是和ue 4引擎息息相关的,很多强大功能都基于蓝图,摒弃蓝图则不得不放弃部分引擎功能,从而影响引擎的实用价值,还会额外产生为绕过蓝图而做的冗余工作成本。
81.以ue 4引擎的diff展示功能为例,ue 4仅在图形化编辑器模式下,提供了diff查看的功能,以蓝图中的graph(即可视化视图)进行探讨。以某蓝图资源为例,可以通过图形界面查看到具体的视图diff内容。
82.具体的,在显示界面的diff浏览列表中,会列出有变化的graph,并且用户可以在操作界面自由浏览某个graph的变化内容。ue 4提供了新、旧版本的可视化对比,支持移动、拖拽、缩放、注释说明等功能,用户可以方便的对比两个版本间的diff内容。该功能的技术实现过程的概况如下:
83.1、对资源进行diff处理;
84.2、绘制diff浏览界面,填充界面所需数据;
85.3、初始化数据,绘制用户界面(user interface,ui)界面;
86.4、生成详细的diff内容和数据;
87.5、绘制视图模块界面,填充相关数据;
88.6、分别为新旧两个版本绘制蓝图视图。
89.具体的,现有技术中diff的应用存在以下问题:
90.第一、不支持自动化,监控成本高;
91.对于测试人员来说,通常需要监控用户对代码的修改是否正确,而代码的修改又很频繁,仅靠人力的话成本是很高的,而且很容易出现疏漏。因此,需要通过自动化的方式去进行监控,在降低人力成本的情况下,还能保证监控质量。而ue 4的diff是通过界面展示的,需要手动通过界面操作才能查看diff信息,无法进行自动化操作。
92.第二、与引擎强绑定,代码无法独立使用;
93.ue 4的蓝图资源,只能通过ue 4引擎自带的编辑器打开进行编辑,用户无法在不使用引擎的情况下,将代码另做它用,也无法使用已有的开发辅助工具对代码进行管理,这极大的限制了用户的工作产能,尤其对于大型项目来说,这个问题给团队协作开发带来了
诸多困难。
94.第三、有局限性,无法进行功能扩展;
95.ue 4提供的diff功能已经定型,只是常规的diff展示,而想要扩展更多其它功能,就需要自行开发,而且是基于ue 4的编辑器做功能开发,扩展和移植均会受到一定程度的限制。但若能将diff数据提取出来,就可通过任意技术对diff数据做任何想要的处理了,包括展示、对比、检查、报警、纠错等等,移植也不会受到太大限制,可以根据需求和环境随意改变,包括直接应用于现有的其它工具上。
96.在上述现有技术存在的问题基础上,图1为本技术实施例提供的可视化编程的代码处理系统的框架结构示意图,用以解决上述技术问题。如图1所示,该结构示意图包括:用户层11、引擎层12、内存层13和存储层14。
97.其中,用户层11包括用户所能看见的视图;引擎层12用于提供视图对应的资源数据中的执行流数据,该执行流数据包括:代码视图和绘制该代码视图对应的功能数据,其中,在对代码视图进行数据结构拆解,得到子代码数据;内存层13用于存储根据预设的数据结构对子代码数据和功能数据进行转存,得到的转存后的数据;存储层14用于存储将转存后的数据按照预设格式转化后的硬盘数据。
98.在一种可能的设计中,用户层11显示视图,从引擎层12的视图对应的资源数据中获取视图的执行流数据,并对该执行流数据(代码视图和绘制该代码视图对应的功能数据)中的代码视图进行数据结构拆解,得到子代码数据,可以包括:多个结点、视图的标识等,根据预设的数据结构,将子代码数据和功能数据存储至内存层13,形成用户可以自定义的数据结构(转存后的数据),为了便于使用,将内存层13中的数据,转化为用户需要的硬盘数据(通用格式的数据文件,例如,json格式)存储在存储层14上。
99.本技术针对上述技术问题,发明人的技术构思过程如下:发明人发现,可以在引擎运行时,将可视化代码从引擎层中提取出来,并且对提取出来的可视化代码进行解析,最终转存为方便使用的通用数据格式,便可以为其他开发流程提供使用的价值,从而满足各种开发所需。
100.下面以图1所示的框架结构示意图,通过具体实施例对本技术的技术方案进行详细说明。需要说明的是,下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本技术的实施例进行描述。
101.图2为本技术实施例提供的可视化编程的代码处理方法实施例一的流程示意图。如图2所示,该方法可以包括如下步骤:
102.步骤21、从引擎层获取视图的执行流数据。
103.在本步骤中,由于可视化代码与引擎强绑定,导致代码无法脱离引擎单独使用,此时需要在计算机设备的引擎层中获取视图中可以用于绘制某一功能的界面的相关信息,也即执行流数据,例如,引擎层的diff数据。
104.具体的,从引擎层的视图对应的资源数据中获取视图的执行流数据。
105.在一种具体实现中,从引擎层获取视图的执行流数据的方式可以具体实现为:即从两个不同版本的资源数据(旧版本视图和新版本视图)对应的资源数据之间进行diff对比,然后对其进行处理为例,图3为本技术实施例提供的执行流数据获取示意图。如图3所示,资源数据31、绘制不同(diff)的相关数据32、执行流数据33、diff数据备份34。
106.可选的,从引擎层获取采用树结构存储的新版本视图对应的第一资源数据和旧版本视图对应的第二资源数据,代码视图包括第一资源数据和第二资源数据;获取第一资源数据和第二资源数据中的不同部分作为功能数据。
107.其中,可以通过ue 4引擎自身的generatedifferenceslist方法进行diff处理,得到masterdifferenceslist(绘制当前蓝图diff界面所需的相关数据,以树的形式存储)、realdifferences(当前蓝图的diff数据备份,不包含绘制所需信息,以树的形式存储)和graphs(当前蓝图仅代码视图的diff数据,会被绘制在diff界面中,以数组的形式存储)。
108.其中,上述masterdifferenceslist、realdifferences和graphs存在耦合,根据需要从上述数据中提取到有用信息,本技术实施例以提取代码视图diff为例,仅使用的是graphs数据。
109.进一步地,执行流数据33包括:代码视图(旧版本代码视图和新版本代码视图)、绘制代码视图对应的功能数据。
110.具体的,执行流数据33中代码视图可以用graphs表示,其中graphs包括旧版本代码视图为graphold和新版本代码视图为graphnew。执行流数据中的功能数据为difflistsource,即下述的graphdiffinfo。
111.其中,graphold\graphnew中含所有结点信息,可用于绘制可视化蓝图。difflistsource只要包括新旧两个版本间的视图中不同部分的信息,即仅包含有差异的信息,可用于绘制diff体现新旧版本的视图之间的区别。
112.步骤22、对代码视图进行数据结构拆解,得到子代码数据。
113.在本步骤中,需要对代码视图(graphold\graphnew)进行数据拆解,得到代码视图的各个结点信息、该代码视图的身份证标识号(identity document,id)、以及与该代码视图相关的其他视图标识;进一步对每个结点信息进行拆解,得到各个引脚信息、该结点的id、以及与该结点关联的其他结点的标识;再进一步的,对每个引脚信息进行拆解,得到该引脚的标识、以及与该引脚关联的其他引脚的标识。
114.其中,每个结点的信息包括:至少一个引脚信息、该结点的标识和与结点关联的其他结点的标识,各个引脚信息包括:至少一个引脚的标识和与该至少一个引脚关联的其他引脚的标识。
115.此外,以用于绘制功能数据的graphdiffinfo为例,其包含了新的结点差异信息、旧的结点差异信息;旧的引脚信息、新的引脚信息;差异类型标识;可显示的差异概述等。
116.示例性的,graphold\graphnew这两个数据的结构其实是一样的,但内容不同,以graphold为例,图4为本技术实施例提供的数据结构拆解示意图。如图4所示,该子代码数据(以旧版本代码视图为例)包括:结点的信息41、视图的标识42、以及视图关联的其他视图的标识43;结点的信息41包括:引脚信息411、结点的标识412和与结点关联的其他结点的标识413;引脚信息411包括:引脚的标识4111和与引脚关联的其他引脚的标识4112。
117.其中,结点的信息41、引脚信息411和引脚的标识4111各自分别为至少一个。
118.具体的,结点的信息41(nodes),包含结点名称、类型、位置、引脚等;
119.引脚信息411(pins),包含引脚名称、类型、方向、默认值、颜色等;引脚的标识4111(pinguid),可以是引脚id,用于识别引脚身份,全蓝图唯一;其他引脚的标识4112(otherpininfo),其它引脚信息,数据类型均不同,此处不逐个列出;结点的标识412
(nodeguid),可以是结点id,用于识别结点身份,全蓝图唯一;其他结点的标识413(othernodeinfo),其它结点信息,数据类型均不同,此处不逐个列出;视图的标识42(graphguid),视图id,一个蓝图中可能包含多个不同的视图,用于识别身份,全蓝图唯一;其他视图的标识43(othergraphinfo),其它视图信息,数据类型均不同,此处不逐个列出。
120.可选的,此时获取到的数据均为引擎层,还需要下述其他技术进行处理。
121.步骤23、根据预设的数据结构,将子代码数据和功能数据存储至内存层,得到转存后的数据。
122.在本步骤中,为了方便开发实现、降低代码复杂度,可以采用重载赋值运算符的方法来完成数据提取操作,在每个自定义数据内完成相对应于引擎(以ue 4为例)数据的赋值重载,即在本技术实施例中,指对子代码数据和功能数据进行赋值重载处理,得到提取后的执行流数据。
123.其中,自定义数据为子代码数据和功能数据。
124.示例性的,对子代码数据和功能数据进行赋值重载处理,继续以上述示例为例,可以通过执行graphtodiff=fgraphtodiff操作即可,具体的,图5为本技术实施例提供的赋值重载处理示意图。如图5所示,该赋值重载处理示意图包括:执行流数据的赋值重载51、子代码数据的赋值重载52、功能数据的赋值重载53、结点的信息的赋值重载54、引脚信息的赋值重载55和链向的引脚数据的赋值重载56。
125.其中,执行流数据graphtodiff的赋值重载51可以是:graphtodiff&&operator=(fgraphtodiff);子代码数据graph的赋值重载52可以是:graphtodiff&operator=(uedgraph);功能数据graphdiffinfo的赋值重载53可以是:graphdiffinfo&operator=(fdiffsingleresult);结点的信息graphnode的赋值重载54可以是:graphnode operator=(uedgraphnode);引脚信息graphpingraph的赋值重载55可以是:graphpingraph operator=(uedgraphpin);链向的引脚数据linkpin的赋值重载56可以是:linkpin operator=(uedlinkpin)。
126.值得一提的是,在赋值重载的过程中,难点在于自定义数据的初始化、赋值、以及类型转换,比如引脚默认值,根据不同数据类型会有不同的默认值,可以统一转换为字符串类型;引脚方向等枚举类型,也可以自行处理统一转换为字符串类型。
127.此外,在内存层中建立结构为预设的数据结构的数据标的,该数据标的用于指示将子代码数据和功能数据存储至内存层中相应的位置。
128.其中,预设的数据结构的数据标的包括:执行流数据表格,执行流数据表格包括:视图的数据区域和与视图关联的功能的数据区域,视图的数据区域包括:至少一个结点区域,结点区域包括:至少一个引脚区域。
129.在本步骤中,为了将上述提取的执行流数据记录在内存层中,以便于后续使用,还需要自定义一套可用的自定义数据结构用于执行流数据存放。
130.示例性的,图6为本技术实施例提供的数据存储示意图。如图6所示,该数据存储示意图以引擎层向内存层的数据拷贝为例进行说明:
131.在引擎层,包括:执行流数据(graphs,class fgraphtodiff),具体为:旧版本代码视图(graphold,class uedgraph);新版本代码视图(graphnew,class uedgraph);功能数据(difflistsource,class fdiffresultem)。
132.在内存层,包括:自定义执行流数据(mygraphs,class graphtodiff),具体为:自定义旧版本代码视图(mygraphold,class graph);自定义新版本代码视图(mygraphnew,class graph);自定义功能数据(mydifflistsource,class diffresultem)。
133.可选的,将提取后的执行流数据,根据数据结构拷贝至数据标的中,得到转存后的数据。
134.在一种可能的实现中,将graphs拆解成graphold、graphnew和difflistsource,并对三个数据进行赋值重载处理,并存储至对应的mygraphold、mygraphnew和mydifflistsource,进而形成mygraphs。
135.示例性的,图7为本技术实施例提供的预设的数据结构示意图。如图7所示,该数据结构包括:执行流数据graphtodiff71、功能数据graphdiffinfo72、子代码数据graph73、结点的信息graphnode74、引脚信息graphpingraph75和链向的引脚数据linkpin76。
136.其中,执行流数据71表格记录所有的子代码数据graph73和功能数据graphdiffinfo72,具体为:旧代码版本视图(graph

old graph)、新代码版本视图(graph

new graph)和版本间差异信息(tarra<graphdiffinfo>diffinfos)。
137.功能数据(功能的数据区域)72记录所有的diff差异信息,该差异信息是针对每个视图的,差异类型如新增结点、删除结点、修改引脚等操作标识,差异概述是对差异类型的文字性描述,具体为:旧的结点差异信息(graphnode

oldnodelnfo)、新的结点差异信息(graphnode

newnodelnfo)、旧的引脚差异信息(graphpin

oldpinlnfo)、新的引脚差异信息(graphpin

newpinlnfo)、差异类型标识(fstring

difftype)、可显示的差异概述(fstring

displaystring)。
138.子代码数据(视图的数据区域)73用于记录视图数据,具体为:视图名称(fstring

groupname)、视图id(fguid

groupid)、视图包含的所有结点(tarra<groupnode>groupnodes)。
139.结点的信息(结点区域)74记录结点数据,结点名称也即可视化代码函数名称,结点位置是ue 4内绘制在平面背景上的位置,可用于重绘参考,具体为:结点id(fguid

nodeid)、结点名称(ftext

nodetitle)、结点名称颜色(flinearcolor

nodetitlecolor)、结点位置

横坐标(int32

nodeposx)、结点位置

纵坐标(int32

nodeposy)、结点包含的所有引脚(tarra<grouppin>pins)。
140.引脚信息(引脚区域)75记录引脚数据,引脚名称即可视化代码函数入口参数或返回值名称,引脚数据类型即入口参数或返回值的数据类型,引脚方向用于区分是入口参数还是返回值,链向引脚也即当前引脚链接的下一个其它结点的引脚,可理解为参数传递,具体为:从属于的结点id(fguid

owningnodeid)、引脚id(fguid

pinid)、引脚名称(fname

pinname)、引脚数据类型(fname

pintypename)、引脚默认值(fstring

defaultvalue)、链向的其它引脚(tarra<linkpin>linktopin)、引脚的方向(tenumacbyte<enum eedgraphpindirection>direction)。
141.链向的引脚数据(链向的引脚区域)76记录链向的引脚数据,具体为:从属于的结点id(fguid

owningnodeid)、引脚id(fguid

pinid)。
142.综上,通过如上数据结构,就可以把蓝图代码视图的各种信息和diff数据记录下来。
143.在上述步骤的基础上,为了便于将存储在内存层的提取后的执行流数据进行使用,还可以执行以下步骤。
144.步骤24、将转存后的数据按照预设格式,转化为硬盘数据存储至存储层。
145.在本步骤中,根据用户自定义的预设格式,将内存层的执行流数据转换到存储层,以便于将某一引擎中的功能应用于其他开发流程(实现该功能的代码格式)中。
146.在一种可能的实现中,当预设格式包括json格式时,图8为本技术实施例提供的格式存储示意图。如图8所示,利用重载序列的方法转换,包括:执行流数据graphtodif的转换81、子代码数据graph的转换82、功能数据graphdiffinfo的转换83、结点的信息graphnode的转换84、引脚信息graphpingraph的转换85和链向的引脚数据linkpin的转换86。
147.其中,执行流数据的转换81可以是:graphtodiff

fjsonobject*serialize();子代码数据的转换82可以是:graphf

jsonobject*serialize();功能数据的转换83可以是:graphdiffinfo

fjsonobject*serialize();结点的信息的转换84可以是:graphnode

fjsonobject*serialize();引脚信息的转换85可以是:graphpingraph

fjsonobject*serialize();链向的引脚数据的转换86可以是:linkpin

fjsonobject*serialize()。
148.可选的,重载序列的方法即,采用序列化方法将转存后的数据转换成为json格式的硬盘数据,这里使用了ue 4自带的json输出类fjsonobject,并在此基础上进行自定义封装,功能可分为如下几类:
149.1、向fjsonobject中插入字符串键值对;
150.2、向fjsonobject中插入fjsonobject嵌套对象;
151.3、向fjsonobject中插入fjsonobject数组;
152.4、获取某个fjsonobject对象中的fjsonobject嵌套对象;
153.5、将fjsonobject对象序列化为json字符串并存储为json文件。
154.如有其它未包括的数据类型,如整型、浮点数、布尔、枚举等,都可以转换为字符串键值对进行处理,如此即可简单方便的将内存中的自定义数据,转存为通用的json文件了。
155.进一步地,将json格式的硬盘数据存储至存储层。在存储层中,可以自由拷贝或用于其他蓝图的功能实现。
156.在一种可能的实现中,综合以上步骤之后,以将一个ue 4蓝图可视化代码转换为json文件的的示例,在另一个蓝图的diff展示界面,diff内容为新增一个结点,也即该执行流数据被另一个蓝图应用。
157.以下展示出部分解析后json文件中的diffinfo数据,对比双实线框的部分和单实线框的部分可以看出,新增了一个结点,导致引脚发生了变化:
158.159.[0160][0161]
以下展示出部分解析后json文件中的新旧视图graph数据,从实线框的部分显示出新增结点“print string”中的部分引脚名称、数据类型和默认值,和实际的可视化代码内容一致:
[0162]
[0163][0164]
本技术提供的可视化编程的代码处理方法,通过从引擎层获取视图的执行流数据,该执行流数据包括:代码视图和绘制代码视图对应的功能数据,并对代码视图进行数据结构拆解,得到子代码数据,之后根据预设的数据结构,将子代码数据和功能数据存储至内
存层,得到转存后的数据,最后将转存后的数据按照预设格式,转化为硬盘数据存储至存储层。该技术方案中,将引擎层的数据拆解后,按照自定义的数据结构存放拆解后的数据,从而实现了对蓝图代码的提取,为用于其他开发流程提供了明文数据基础。
[0165]
在上述方法实施例的基础上,图9为本技术实施例提供的可视化编程的代码处理装置的示意图。如图9所示,该处理装置包括:获取模块91、处理模块92、存储模块93。
[0166]
获取模块91,用于从引擎层获取视图的执行流数据,执行流数据包括:代码视图和绘制代码视图对应的功能数据;
[0167]
处理模块92,用于对代码视图进行数据结构拆解,得到子代码数据,子代码数据包括:至少一个结点的信息、视图的标识、以及视图关联的其他视图的标识;
[0168]
存储模块93,用于根据预设的数据结构,将子代码数据和功能数据存储至内存层,得到转存后的数据,还将转存后的数据按照预设格式,转化为硬盘数据存储至存储层。
[0169]
在本技术实施例一种可能的设计中,每个结点的信息包括:至少一个引脚信息、结点的标识和与结点关联的其他结点的标识,各个引脚信息包括:至少一个引脚的标识和与至少一个引脚关联的其他引脚的标识。
[0170]
在本技术实施例另一种可能的设计中,预设的数据结构包括:执行流数据表格,执行流数据表格包括:视图的数据区域和与视图关联的功能数据区域,视图的数据区域包括:至少一个结点区域,结点区域包括:至少一个引脚区域,与视图关联的功能数据区域包括至少一个引脚的引脚信息。
[0171]
在本技术实施例再一种可能的设计中,获取模块91,具体用于从引擎层的视图对应的资源数据中获取视图的执行流数据。
[0172]
在该种可能的设计中,获取模块91,具体用于:
[0173]
从引擎层获取采用树结构存储的新版本视图对应的第一资源数据和旧版本视图对应的第二资源数据,代码视图包括第一资源数据和第二资源数据;
[0174]
获取第一资源数据和第二资源数据中的不同部分作为功能数据。
[0175]
在本技术实施例还一种可能的设计中,存储模块93,根据预设的数据结构,将子代码数据和功能数据存储至内存层,得到转存后的数据,具体用于:
[0176]
在内存层中建立结构为预设的数据结构的数据标的;
[0177]
对子代码数据和功能数据进行赋值重载处理,得到提取后的执行流数据;
[0178]
将提取后的执行流数据,根据数据结构拷贝至数据标的中,得到转存后的数据。
[0179]
在本技术实施例又一种可能的设计中,预设格式包括:json格式,则存储模块93,将转存后的数据按照预设格式,转化为硬盘数据存储至存储层,具体用于:
[0180]
采用序列化方法将转存后的数据转换成为json格式的硬盘数据;
[0181]
将json格式的硬盘数据存储至存储层。
[0182]
本技术实施例提供的可视化编程的代码处理装置,可用于执行图2实施例中可视化编程的代码处理方法对应的技术方案,其实现原理和技术效果类似,在此不再赘述。
[0183]
需要说明的是,应理解以上装置的各个模块的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。且这些模块可以全部以软件通过处理元件调用的形式实现;也可以全部以硬件的形式实现;还可以部分模块通过处理元件调用软件的形式实现,部分模块通过硬件的形式实现。此外这些模块全部
或部分可以集成在一起,也可以独立实现。这里所述的处理元件可以是一种集成电路,具有信号的处理能力。在实现过程中,上述方法的各步骤或以上各个模块可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完成。
[0184]
图10为本技术实施例提供的计算机设备的结构示意图。如图10所示,该计算机设备可以包括:处理器101、存储器102及存储在该存储器102上并可在处理器101上运行的计算机程序指令。
[0185]
处理器101执行存储器102存储的计算机执行指令,使得处理器101执行上述实施例中的方案。处理器101可以是通用处理器,包括中央处理器cpu、网络处理器(network processor,np)等;还可以是数字信号处理器dsp、专用集成电路asic、现场可编程门阵列fpga或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
[0186]
存储器102通过系统总线与处理器101连接并完成相互间的通信,存储器102用于存储计算机程序指令。
[0187]
系统总线可以是外设部件互连标准(peripheral component interconnect,pci)总线或扩展工业标准结构(extended industry standard architecture,eisa)总线等。系统总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
[0188]
本技术实施例提供的计算机设备,可用于执行上述实施例中可视化编程的代码处理方法对应的技术方案,其实现原理和技术效果类似,在此不再赘述。
[0189]
本技术实施例还提供一种运行指令的芯片,该芯片用于执行上述实施例中可视化编程的代码处理方法的技术方案。
[0190]
本技术实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机指令,当该计算机指令在计算机设备上运行时,使得计算机设备执行上述实施例中可视化编程的代码处理方法的技术方案。
[0191]
本技术实施例还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时用于执行上述实施例中可视化编程的代码处理方法的技术方案。
[0192]
上述的计算机可读存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。可读存储介质可以是通用或专用计算机设备能够存取的任何可用介质。
[0193]
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求书来限制。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献