本申请提供了一种使用序列化的属性编辑处理方法和装置、设备及介质,涉及软件技术领域。该方法通过对象,生成对象的中间对象;通过对象中的一个或多个变量,创建生成各个变量的中间属性;本申请实施例采用中间属性类型代替变量名传递变量信息,只要是对象中的变量,中间属性都可以进行表示和修改;同时,封装了访问接口和修改接口,使得二次开发人员可以在编辑器类中安全、便捷地对变量进行编辑操作,实现对对象的属性的编辑。现对对象的属性的编辑。现对对象的属性的编辑。
【技术实现步骤摘要】
使用序列化的属性编辑处理方法和装置、设备及介质
[0001]本申请涉及软件
,尤其涉及一种使用序列化的属性编辑处理方法和装置、电子设备及存储介质。
技术介绍
[0002]3D(三维)图形引擎是一种用于渲染三维图形的软件工具,通常可以用于游戏开发、虚拟现实和计算机辅助设计等领域。通常一款3D图形引擎无法完全覆盖所有用户的需求,因此用户需要根据自己的用途对引擎进行二次开发,二次开发中最常见的就是添加自定义功能的组件。在开发了自己的组件之后,还需要考虑在编辑器界面如何对组件进行显示和编辑,以方便策划和美术等工作更方便地使用组件。
[0003]例如,组件中包含一个字符串类型的变量,如果使用默认的编辑方式,则界面会给出一个输入框,用户手动输入所需信息,但当字符串表达的含义是一个文件路径时,用户通常希望可以直接在界面上选取文件,甚至是将文件拖动到输入框处进行赋值,从而避免了找到文件位置、复制文件路径、粘贴到输入框的复杂操作路径,也避免了误输入的问题。再例如,组件中的一个整数类型的成员变量的值只允许以10为单位移动,且一次只能移动10,如果用户使用默认的编辑方式手动输入值则需要每位编辑人员都了解并遵守这一规则,但如果用户可以在界面上开发一个按钮,点击一次按钮就移动10,即保证了规则的可维护性,又方便了编辑人员的使用。诸如这样的例子还有很多,因此在开发引擎时需要设计出合理的接口,使得二次开发的人员可以用简单高效的方式实现上述需求。
[0004]现有的技术方案是实现一个Editor(编辑)类,将这个类绑定到组件上,成为该组件的编辑类。在编辑类中可以重载一个绘制接口,通过调用Create(创建)函数并传入需要编辑的变量名和希望显示出的样式类型实现绘制的定制。同时在Editor类中保存了被编辑的对象,可以直接通过指针获取对象的数据并进行编辑。现有方案的主要缺点是:通过变量名传递变量信息存在限制,即,只能编辑直接存在于当前对象中的变量,无法将多重包含的变量进行打散并组合编辑;对数组元素无法进行定制编辑;灵活性较低,无法同时编辑包含在其他类型中的变量。因此,亟需解决这一技术问题。
技术实现思路
[0005]鉴于上述问题,提出了本申请以便提供一种克服上述问题或者至少部分地解决上述问题的使用序列化的属性编辑处理方法和装置、电子设备及存储介质。所述技术方案如下:
[0006]第一方面,提供了一种使用序列化的属性编辑处理方法,包括:
[0007]通过对象,生成所述对象的中间对象;其中所述对象的属性待被编辑,且所述对象的属性通过所述对象中的一个或多个变量来表示,在所述中间对象中所述对象的实例的变量被序列化为连续空间存储;
[0008]通过所述对象中的一个或多个变量,创建生成各个变量的中间属性;
[0009]根据所述对象中待被编辑的变量的路径,在创建生成的各个变量的中间属性中查找到对应的目标中间属性;
[0010]通过所述目标中间属性的访问接口和修改接口,根据所述对象中待被编辑的变量的修改信息对所述中间对象中的连续空间存储进行修改,并将连续空间存储的修改应用到所述对象上。
[0011]在一种可能的实现方式中,通过对象,生成所述对象的中间对象,包括:
[0012]遍历对象的类型信息,生成所述对象对应的类型信息结构;
[0013]以生成所述对象对应的类型信息结构相同的顺序,对所述对象的实例的变量进行遍历,将所述对象的实例的变量序列化为连续空间存储,从而生成包括成员变量类型信息结构和连续空间存储的中间对象。
[0014]在一种可能的实现方式中,所述方法还包括:
[0015]实现序列化管理类,用于维护从所述对象的指针到连续空间存储的映射;每次在同一帧内需要将所述对象的实例的变量序列化为连续空间存储时,调用序列化管理类的对象到连续空间存储接口,从映射中查询是否已经存在被序列化过的连续空间存储,若存在则直接赋值,否则调用序列化接口生产连续空间存储并存储在映射中。
[0016]在一种可能的实现方式中,所述各个变量的中间属性中的多个成员变量,分别以指针的形式指向所述中间对象中的成员变量。
[0017]在一种可能的实现方式中,所述将连续空间存储的修改应用到所述对象上,包括:
[0018]调用所述对象的中间对象中的申请修改接口,根据所述对象对应的类型信息结构,将修改后的连续空间存储反序列化为变量,从而将连续空间存储的修改应用到所述对象上。
[0019]在一种可能的实现方式中,在将连续空间存储的修改应用到所述对象上之后,所述方法还包括:
[0020]通过所述申请修改接口调用属性命令,实现属性修改的撤销或重做功能,其中所述属性命令存储了被修改的对象的指针、修改前的连续空间存储、修改后的连续空间存储和修改路径的数组。
[0021]在一种可能的实现方式中,所述方法还包括:
[0022]在属性编辑面板的编辑类里,以成员变量的形式保存所述对象的中间对象;
[0023]对于待显示在属性编辑面板上的属性,调用所述中间对象的获取属性接口获取中间属性,将中间属性传入对应类型的属性编辑条目,创建出一条属性编辑空间。
[0024]第二方面,提供了一种使用序列化的属性编辑处理装置,包括:
[0025]生成模块,用于通过对象,生成所述对象的中间对象;其中所述对象的属性待被编辑,且所述对象的属性通过所述对象中的一个或多个变量来表示,在所述中间对象中所述对象的实例的变量被序列化为连续空间存储;通过所述对象中的一个或多个变量,创建生成各个变量的中间属性;
[0026]查找模块,用于根据所述对象中待被编辑的变量的路径,在创建生成的各个变量的中间属性中查找到对应的目标中间属性;
[0027]处理模块,用于通过所述目标中间属性的访问接口和修改接口,根据所述对象中待被编辑的变量的修改信息对所述中间对象中的连续空间存储进行修改,并将连续空间存
储的修改应用到所述对象上。
[0028]在一种可能的实现方式中,所述生成模块还用于:
[0029]遍历对象的类型信息,生成所述对象对应的类型信息结构;
[0030]以生成所述对象对应的类型信息结构相同的顺序,对所述对象的实例的变量进行遍历,将所述对象的实例的变量序列化为连续空间存储,从而生成包括成员变量类型信息结构和连续空间存储的中间对象。
[0031]在一种可能的实现方式中,所述处理模块还用于:
[0032]实现序列化管理类,用于维护从所述对象的指针到连续空间存储的映射;每次在同一帧内需要将所述对象的实例的变量序列化为连续空间存储时,调用序列化管理类的对象到连续空间存储接口,从映射中查询是否已经存在被序列化过的连续空间存储,若存在则直接赋值,否则调用序列化接口生产连续空间存储并存储在映射中。
[0033]在一种可能的实现方式中,所述各个变量的中间属性中的多个成员变量,分别以指针的形式指向所述中间对象中的成员变量。
[0034]在一种可本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.一种使用序列化的属性编辑处理方法,其特征在于,包括:通过对象,生成所述对象的中间对象;其中所述对象的属性待被编辑,且所述对象的属性通过所述对象中的一个或多个变量来表示,在所述中间对象中所述对象的实例的变量被序列化为连续空间存储;通过所述对象中的一个或多个变量,创建生成各个变量的中间属性;根据所述对象中待被编辑的变量的路径,在创建生成的各个变量的中间属性中查找到对应的目标中间属性;通过所述目标中间属性的访问接口和修改接口,根据所述对象中待被编辑的变量的修改信息对所述中间对象中的连续空间存储进行修改,并将连续空间存储的修改应用到所述对象上。2.根据权利要求1所述的方法,其特征在于,通过对象,生成所述对象的中间对象,包括:遍历对象的类型信息,生成所述对象对应的类型信息结构;以生成所述对象对应的类型信息结构相同的顺序,对所述对象的实例的变量进行遍历,将所述对象的实例的变量序列化为连续空间存储,从而生成包括成员变量类型信息结构和连续空间存储的中间对象。3.根据权利要求2所述的方法,其特征在于,所述方法还包括:实现序列化管理类,用于维护从所述对象的指针到连续空间存储的映射;每次在同一帧内需要将所述对象的实例的变量序列化为连续空间存储时,调用序列化管理类的对象到连续空间存储接口,从映射中查询是否已经存在被序列化过的连续空间存储,若存在则直接赋值,否则调用序列化接口生产连续空间存储并存储在映射中。4.根据权利要求1至3中任一项所述的方法,其特征在于,所述各个变量的中间属性中的多个成员变量,分别以指针的形式指向所述中间对象中的成员变量。5.根据权利要求2所述的方法,其特征在于,所述将连续空间存储的修改应用到所述对象上,包括:调用所述对象的中间对象中的申请修改接口,根据所述对象对应的类型信息结构,将修改后的连续空间存储反序列化为变...
【专利技术属性】
技术研发人员:崔铭,池婧雯,傅晨阳,冯星,李荣华,方顺,
申请(专利权)人:北京渲光科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。