CN113730920A - 一种预设组件同步属性的方法及其系统 - Google Patents

一种预设组件同步属性的方法及其系统 Download PDF

Info

Publication number
CN113730920A
CN113730920A CN202111078225.5A CN202111078225A CN113730920A CN 113730920 A CN113730920 A CN 113730920A CN 202111078225 A CN202111078225 A CN 202111078225A CN 113730920 A CN113730920 A CN 113730920A
Authority
CN
China
Prior art keywords
preset component
preset
file
component
game
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202111078225.5A
Other languages
English (en)
Other versions
CN113730920B (zh
Inventor
刘德建
柳旭辉
陈宏展
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujian Tianqing Online Interactive Technology Co Ltd
Original Assignee
Fujian Tianqing Online Interactive Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujian Tianqing Online Interactive Technology Co Ltd filed Critical Fujian Tianqing Online Interactive Technology Co Ltd
Priority to CN202111078225.5A priority Critical patent/CN113730920B/zh
Publication of CN113730920A publication Critical patent/CN113730920A/zh
Application granted granted Critical
Publication of CN113730920B publication Critical patent/CN113730920B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/60Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Processing Or Creating Images (AREA)

Abstract

本发明提供了一种预设组件同步属性的方法,该方法为:1、在游戏场景中新建空对象,对空对象添加游戏对象,形成具有父子结构的组合体;2、通过解析组合体节点信息,将组合体保存成预设组件文件;3、对预设组件文件进行实例化成预设组件对象,添加到游戏场景中;4、在场景中添加多个预设组件对象后,通过获取场景中所有预设组件对象,形成预设组件列表;5、选择一个预设组件对象,进行添加、删除组件、或者修改属性的操作;6、对选择的预设组件对象进入预设组件编辑状态,同步场景中所有预设组件对象属性;7、退出预设组件编辑状态,保存预设组件文件,达到同步属性的目的,提高编辑游戏场景物件的效率。

Description

一种预设组件同步属性的方法及其系统
技术领域
本发明涉及游戏制作技术领域,特别是一种预设组件同步属性的方法及其系统。
背景技术
众所周知,游戏资源和用在游戏场景中的游戏物体是不一样的,一个资源将其拖动到游戏场景中就变成一个带有各种组件的节点,我们可以将多个节点组合成新的游戏物件,例如用多个模型道具组合成一个房子等。
从资源的重复利用来看,直接使用素材资源来搭建场景是效率比较低的,比较高效的方法是重复利用在场景中已经完成了设置、修改、组合等工作的游戏物体。
在很多游戏编辑器中,都有组合体的概念,就是将多个物体组合成一个新的物体,然后可以对其进行整体操作,这个主要是对资源进行整合,组合成类似于一个分组的物件,但是如果对组合体修改的时候,只是会改变当前组合体的内容,即使将这个组合体通过复制的方式,在场景中生成多个组合体,在修改时需要对每一个组件进行修改,无法直接同步属性,是比较繁琐的操作。
现有技术主要存在以下缺点:在游戏场景中,如果使用多个组合体,当一个组合体改变的时候,并不会同时改变别的组合体,改变的只是当前的组合体,如果可以保持游戏对象和组合体的关联,也就是对组合体进行添加和删除组件、修改属性等操作,实例化后的游戏对象都会发生相应的改变,同步所有组合体的属性,将会提高编辑游戏场景物件的效率。
发明内容
为克服上述问题,本发明的目的是提供一种预设组件同步属性的方法,使游戏对象和资源重复利用,提高搭建游戏场景的效率。
本发明采用以下方案实现:一种预设组件同步属性的方法,所述方法包括如下步骤:
步骤S1、在游戏场景中新建空对象,对空对象添加游戏对象,形成具有父子结构的组合体;
步骤S2、通过解析组合体节点信息,将组合体保存成预设组件文件;
步骤S3、对预设组件文件进行实例化成预设组件对象,添加到游戏场景中;
步骤S4、在场景中添加多个预设组件对象后,通过获取场景中所有预设组件对象,形成预设组件列表;
步骤S5、选择一个预设组件对象,进行添加、删除组件、或者修改属性的操作;
步骤S6、对选择的预设组件对象进入预设组件编辑状态,同步场景中所有预设组件对象属性;
步骤S7、退出预设组件编辑状态,保存预设组件文件,达到同步属性的目的。
进一步的,所述步骤S2进一步具体为:通过解析组合体节点信息,获取组合体中所有游戏对象,将组合体保存成预设组件文件;一个组合体通常由多个游戏对象组成,每个游戏对象有其位置、大小、对应的资源模型文件路径的属性信息;保存成的预设组件文件是将这些属性信息保存成一个节点资源。
进一步的,所述步骤S3进一步具体为:通过将预设组件文件拖动到游戏场景中,进行实例化成预设组件对象,添加到游戏场景中;预设组件对象的实例化,并不是普通的复制组件对象的过程;即预设组件对象实例化后产生的新的游戏对象因为在添加到场景时,游戏程序对预设组件对象设置预设标志,将添加到预设组件对象的每个组件对象都设置预设组件对象名字,所以游戏对象依然保持着与预设组件对象的关联,也就是对预设组件对象进行添加组件、修改属性操作,预设组件对象实例化后的游戏对象都会发生相应的改变。
进一步的,所述预设组件对象的实例化就是将预设组件文件进行解析,获取到预设组件文件中的预设组件节点,在游戏场景中生成预设组件对象,作为一个具体的游戏模型,从而将虚拟的预设组件文件信息变为具体的场景物件的过程。
进一步的,所述步骤S5进一步具体为:选择预设组件列表中一个预设组件对象,根据具体的场景搭建需求,对预设组件对象进行添加新组件或者删除原有组件,或者修改位置、大小、旋转的属性,这时候就会触发预设组件对象的状态改变。
进一步的,所述步骤S6进一步具体为:触发预设组件对象的修改状态后,将会进入预设组件对象编辑状态,原先的预设组件文件会变成正在编辑状态,预设组件对象修改的具体内容将保存在程序内存中,以便之后预设组件文件保存覆盖操作;
预设组件对象修改时,将同步场景中所有预设组件对象属性;主要分为两个同步方式:一种是预设组件对象内的组件数量改变,包括在预设组件对象内添加新的组件和删除原有组件,同步时,需要先遍历场景中的所有物件,根据在添加预设组件对象时设置的预设组件对象名字,获取到对应的所有预设组件对象,然后,除了当前编辑的预设组件对象,剩下的所有预设组件对象内的所有组件都删除,这样剩下的所有预设组件对象都成为了空的游戏对象;接着,对当前编辑的预设组件对象内的所有组件进行克隆操作,复制组件对象节点信息和属性信息,遍历所有预设组件对象,添加到剩下的所有预设组件对象中,这样就实现了预设组件对象的组件数量的同步操作;另一种是预设组件对象的组件属性改变,主要修改组件的位置、大小、旋转、颜色、材质的属性;同步方式是通过获取当前修改的组件属性值,然后给剩下的所有预设组件对象,设置获取到的组件属性值,达到属性的同步改变。
进一步的,所述步骤S7进一步具体为:同步完所有预设组件对象属性后,将退出预设组件编辑状态,保存预设组件文件,通过文件复制替换的方式来进行保存;原先生成预设组件对象的文件进行删除,然后将保存在程序内存的预设组件对象保存成预设组件文件,复制到原先的预设组件文件中实现替换,然后删除程序内存保存的预设组件文件;这样就实现了预设组件文件的覆盖保存。
本发明还提供了一种预设组件同步属性的系统,所述系统包括:游戏对象添加模块、解析模块、实例化模块、预设组件列表生成模块、对象编辑模块、属性同步模块、以及保存模块;
所述游戏对象添加模块,用于在游戏场景中新建空对象,对空对象添加游戏对象,形成具有父子结构的组合体;
所述解析模块,用于通过解析组合体节点信息,将组合体保存成预设组件文件;
所述实例化模块,用于对预设组件文件进行实例化成预设组件对象,添加到游戏场景中;
所述预设组件列表生成模块,用于在场景中添加多个预设组件对象后,通过获取场景中所有预设组件对象,形成预设组件列表;
所述对象编辑模块,选择一个预设组件对象,进行添加、删除组件、或者修改属性的操作;
所述属性同步模块,对选择的预设组件对象进入预设组件编辑状态,同步场景中所有预设组件对象属性;
所述保存模块,用于退出预设组件编辑状态,保存预设组件文件,达到同步属性的目的。
进一步的,所述解析模块的实现方式进一步具体为:通过解析组合体节点信息,获取组合体中所有游戏对象,将组合体保存成预设组件文件;一个组合体通常由多个游戏对象组成,每个游戏对象有其位置、大小、对应的资源模型文件路径的属性信息;保存成的预设组件文件是将这些属性信息保存成一个节点资源。
进一步的,所述实例化模块的实现方式进一步具体为:通过将预设组件文件拖动到游戏场景中,进行实例化成预设组件对象,添加到游戏场景中;预设组件对象的实例化,并不是普通的复制组件对象的过程;即预设组件对象实例化后产生的新的游戏对象因为在添加到场景时,游戏程序对预设组件对象设置预设标志,将添加到预设组件对象的每个组件对象都设置预设组件对象名字,所以游戏对象依然保持着与预设组件对象的关联,也就是对预设组件对象进行添加组件、修改属性操作,预设组件对象实例化后的游戏对象都会发生相应的改变。
进一步的,所述预设组件对象的实例化就是将预设组件文件进行解析,获取到预设组件文件中的预设组件节点,在游戏场景中生成预设组件对象,作为一个具体的游戏模型,从而将虚拟的预设组件文件信息变为具体的场景物件的过程。
进一步的,所述对象编辑模块的实现方式进一步具体为:选择预设组件列表中一个预设组件对象,根据具体的场景搭建需求,对预设组件对象进行添加新组件或者删除原有组件,或者修改位置、大小、旋转的属性,这时候就会触发预设组件对象的状态改变。
进一步的,所述属性同步模块的实现方式进一步具体为:触发预设组件对象的修改状态后,将会进入预设组件对象编辑状态,原先的预设组件文件会变成正在编辑状态,预设组件对象修改的具体内容将保存在程序内存中,以便之后预设组件文件保存覆盖操作;
预设组件对象修改时,将同步场景中所有预设组件对象属性;主要分为两个同步方式:一种是预设组件对象内的组件数量改变,包括在预设组件对象内添加新的组件和删除原有组件,同步时,需要先遍历场景中的所有物件,根据在添加预设组件对象时设置的预设组件对象名字,获取到对应的所有预设组件对象,然后,除了当前编辑的预设组件对象,剩下的所有预设组件对象内的所有组件都删除,这样剩下的所有预设组件对象都成为了空的游戏对象;接着,对当前编辑的预设组件对象内的所有组件进行克隆操作,复制组件对象节点信息和属性信息,遍历所有预设组件对象,添加到剩下的所有预设组件对象中,这样就实现了预设组件对象的组件数量的同步操作;另一种是预设组件对象的组件属性改变,主要修改组件的位置、大小、旋转、颜色、材质的属性;同步方式是通过获取当前修改的组件属性值,然后给剩下的所有预设组件对象,设置获取到的组件属性值,达到属性的同步改变。
进一步的,所述保存模块的实现方式进一步具体为:同步完所有预设组件对象属性后,将退出预设组件编辑状态,保存预设组件文件,通过文件复制替换的方式来进行保存;原先生成预设组件对象的文件进行删除,然后将保存在程序内存的预设组件对象保存成预设组件文件,复制到原先的预设组件文件中实现替换,然后删除程序内存保存的预设组件文件;这样就实现了预设组件文件的覆盖保存。
本发明的有益效果在于:本发明在游戏场景中,首先新建一个空的游戏对象,添加游戏场景中的物件到这个空对象中,形成具有父子结构的组合体,然后将其保存成预设组件文件。将预设组件文件拖入到游戏场景中,实例化成具体的预设组件对象,在对一个预设组件对象进行添加和删除组件、修改属性的时候,将会进入预设组件编辑状态,由于实例化后产生的新的游戏对象依然保持着与预设组件对象的关联,所有在场景中的预设组件对象都会进行同步属性,本发明可以对相同的游戏对象使用同一个预设组件来创建,对预设组件进行修改后,所有的游戏对象都会发生改变,使游戏对象和资源重复利用,提高搭建游戏场景的效率。
附图说明
图1是本发明的方法流程示意图。
图2是本发明的系统原理框图。
具体实施方式
下面结合附图对本发明做进一步说明。
本发明提供了一种预设组件同步属性的方法,所述方法包括如下步骤:
步骤S1、在游戏场景中新建空对象,对空对象添加游戏对象,形成具有父子结构的组合体;
步骤S2、通过解析组合体节点信息,将组合体保存成预设组件文件;
步骤S3、对预设组件文件进行实例化成预设组件对象,添加到游戏场景中;
步骤S4、在场景中添加多个预设组件对象后,通过获取场景中所有预设组件对象,形成预设组件列表;
步骤S5、选择一个预设组件对象,进行添加、删除组件、或者修改属性的操作;
步骤S6、对选择的预设组件对象进入预设组件编辑状态,同步场景中所有预设组件对象属性;
步骤S7、退出预设组件编辑状态,保存预设组件文件,达到同步属性的目的。
下面结合一具体实施例对本发明做进一步说明:
预设组件是指通过一个预设组件文件,创建出一个游戏对象,然后把它作为一个游戏模板或原型,通过拖拽到游戏场景中,来创建出一个新的游戏对象。但是预设组件文件,实际上并不包括任何模型、贴图等真正的素材资源文件,只是一个类似于素材资源的链接文件,将预设组件对象作为一种区别于普通物件的资源素材,在场景中添加预设组件对象,其实只是按照预设组件文件所描述的,进行引用真实的素材资源,可以看做是对游戏场景中游戏物件的描述文件。
本发明的一种预设组件同步属性的方法,在游戏场景中,首先新建一个空的游戏对象,添加游戏场景中的物件到这个空对象中,形成具有父子结构的组合体,然后将其保存成预设组件文件。将预设组件文件拖入到游戏场景中,实例化成具体的预设组件对象,在对一个预设组件对象进行添加和删除组件、修改属性的时候,将会进入预设组件编辑状态,由于实例化后产生的新的游戏对象依然保持着与预设组件对象的关联,所有在场景中的预设组件对象都会进行同步属性。
请参阅图1所示,一种预设组件同步属性的方法,1.在游戏场景中新建空对象,对其添加游戏对象,形成组合体;
即首先,在游戏场景中新建一个空的游戏对象,对这个空的游戏对象,进行添加新的游戏对象,使其成为父子结构,形成一个组合体,方便对齐进行整体操作。
2.通过解析组合体节点信息,将组合体保存成预设组件文件;
即通过解析组合体节点信息,获取组合体中所有游戏对象,将组合体保存成预设组件文件。一个组合体通常由多个游戏对象组成,每个对象有其位置、大小等属性信息,最主要的是有其对应的资源模型文件路径。保存成的预设文件主要是将这些信息保存成一个节点资源。
3.对预设组件文件进行实例化成预设组件对象,添加到游戏场景中;
即通过将预设组件文件拖动到游戏场景中,进行实例化成预设组件对象,添加到游戏场景中。实例化就是将预设组件文件进行解析,获取到预设组件文件中的预设组件节点,在游戏场景中生成预设组件对象,作为一个具体的游戏模型,从而将虚拟的文件信息变为具体的场景物件的过程。但预设组件对象的实例化,并不是普通的复制组件对象的过程。预设组件对象实例化后产生的新的游戏对象因为在添加到场景时,程序对其设置预设标志,将添加到预设组件对象的每个组件对象都设置其预设组件对象名字,所以依然保持着与预设组件对象的关联,也就是对预设组件对象进行添加组件、修改属性等操作,预设组件对象实例化后的游戏对象都会发生相应的改变。
4.获取所有预设组件对象,形成预设组件列表;
即在场景中,添加多个预设组件对象后,通过获取场景中所有预设组件对象,形成预设组件列表,保存成预设组件列表有助于后期遍历列表,方便同步预设组件对象属性的工作。
5.选择一个预设组件对象,进行添加或删除组件,修改属性等操作;
即选择预设组件列表中一个预设组件对象,根据具体的场景搭建需求,对预设组件对象进行添加新组件或者删除原有组件,或者修改位置、大小、旋转等属性,这时候就会触发预设组件对象的状态改变。
6.进入预设组件编辑状态,同步场景中所有预设组件对象属性;
即触发预设组件对象的修改状态后,将会进入预设组件编辑状态,原先的预设组件文件会变成正在编辑状态,预设组件对象修改的具体内容将保存在程序内存中,以便之后预设组件文件保存覆盖操作。
预设组件对象修改时,将同步场景中所有预设组件对象属性。主要分为两个同步方式:一种是预设组件对象内的组件数量改变,包括在预设组件对象内添加新的组件和删除原有组件,同步时,需要先遍历场景中的所有物件,根据在添加预设组件对象时设置的预设组件对象名字,获取到对应的所有预设组件对象,然后,除了当前编辑的预设组件对象,剩下的所有预设组件对象,把其预设组件对象内的所有组件都删除,这样以后,别的所有预设组件对象都成为了空的游戏对象。接着,对当前编辑的预设组件对象内的所有组件进行克隆操作,复制组件对象节点信息和属性信息,遍历所有预设组件对象,添加到别的预设组件对象中,这样就实现了预设组件对象的组件数量的同步操作。另一种是预设组件对象的组件属性改变,主要修改组件的位置、大小、旋转、颜色、材质等属性。同步方法主要是通过获取当前修改的组件属性值,然后给别的预设组件对象,设置获取到的组件属性值,达到属性的同步改变。
7.退出预设组件编辑状态,保存预设组件文件;
即同步完所有预设组件对象属性后,将退出预设组件编辑状态,保存预设组件文件,主要是通过文件复制替换的方法来进行保存。原先生成预设组件对象的文件进行删除,然后将保存在程序内存的预设组件对象保存成预设组件文件,复制到原先的预设组件文件中实现替换,然后删除程序内存保存的预设组件文件。这样就实现了预设组件文件的覆盖保存。
请参阅图2所示,本发明还提供了一种预设组件同步属性的系统,所述系统包括:游戏对象添加模块、解析模块、实例化模块、预设组件列表生成模块、对象编辑模块、属性同步模块、以及保存模块;
所述游戏对象添加模块,用于在游戏场景中新建空对象,对空对象添加游戏对象,形成具有父子结构的组合体;
所述解析模块,用于通过解析组合体节点信息,将组合体保存成预设组件文件;
所述实例化模块,用于对预设组件文件进行实例化成预设组件对象,添加到游戏场景中;
所述预设组件列表生成模块,用于在场景中添加多个预设组件对象后,通过获取场景中所有预设组件对象,形成预设组件列表;
所述对象编辑模块,选择一个预设组件对象,进行添加、删除组件、或者修改属性的操作;
所述属性同步模块,对选择的预设组件对象进入预设组件编辑状态,同步场景中所有预设组件对象属性;
所述保存模块,用于退出预设组件编辑状态,保存预设组件文件,达到同步属性的目的。
其中,所述解析模块的实现方式进一步具体为:通过解析组合体节点信息,获取组合体中所有游戏对象,将组合体保存成预设组件文件;一个组合体通常由多个游戏对象组成,每个游戏对象有其位置、大小、对应的资源模型文件路径的属性信息;保存成的预设组件文件是将这些属性信息保存成一个节点资源。
所述实例化模块的实现方式进一步具体为:通过将预设组件文件拖动到游戏场景中,进行实例化成预设组件对象,添加到游戏场景中;预设组件对象的实例化,并不是普通的复制组件对象的过程;即预设组件对象实例化后产生的新的游戏对象因为在添加到场景时,游戏程序对预设组件对象设置预设标志,将添加到预设组件对象的每个组件对象都设置预设组件对象名字,所以游戏对象依然保持着与预设组件对象的关联,也就是对预设组件对象进行添加组件、修改属性操作,预设组件对象实例化后的游戏对象都会发生相应的改变。
所述预设组件对象的实例化就是将预设组件文件进行解析,获取到预设组件文件中的预设组件节点,在游戏场景中生成预设组件对象,作为一个具体的游戏模型,从而将虚拟的预设组件文件信息变为具体的场景物件的过程。
所述对象编辑模块的实现方式进一步具体为:选择预设组件列表中一个预设组件对象,根据具体的场景搭建需求,对预设组件对象进行添加新组件或者删除原有组件,或者修改位置、大小、旋转的属性,这时候就会触发预设组件对象的状态改变。
所述属性同步模块的实现方式进一步具体为:触发预设组件对象的修改状态后,将会进入预设组件对象编辑状态,原先的预设组件文件会变成正在编辑状态,预设组件对象修改的具体内容将保存在程序内存中,以便之后预设组件文件保存覆盖操作;
预设组件对象修改时,将同步场景中所有预设组件对象属性;主要分为两个同步方式:一种是预设组件对象内的组件数量改变,包括在预设组件对象内添加新的组件和删除原有组件,同步时,需要先遍历场景中的所有物件,根据在添加预设组件对象时设置的预设组件对象名字,获取到对应的所有预设组件对象,然后,除了当前编辑的预设组件对象,剩下的所有预设组件对象内的所有组件都删除,这样剩下的所有预设组件对象都成为了空的游戏对象;接着,对当前编辑的预设组件对象内的所有组件进行克隆操作,复制组件对象节点信息和属性信息,遍历所有预设组件对象,添加到剩下的所有预设组件对象中,这样就实现了预设组件对象的组件数量的同步操作;另一种是预设组件对象的组件属性改变,主要修改组件的位置、大小、旋转、颜色、材质的属性;同步方式是通过获取当前修改的组件属性值,然后给剩下的所有预设组件对象,设置获取到的组件属性值,达到属性的同步改变。
所述保存模块的实现方式进一步具体为:同步完所有预设组件对象属性后,将退出预设组件编辑状态,保存预设组件文件,通过文件复制替换的方式来进行保存;原先生成预设组件对象的文件进行删除,然后将保存在程序内存的预设组件对象保存成预设组件文件,复制到原先的预设组件文件中实现替换,然后删除程序内存保存的预设组件文件;这样就实现了预设组件文件的覆盖保存。
本发明的应用场景如下:
构建预设组件对象,首先需要生成一个组合体,在游戏场景中新建一个空的游戏对象Prefab,添加组件A和组件B,就形成了一个带有组件A和组件B的组合体Prefab。通过解析组合体节点信息,将组合体保存成预设组件文件,保存的预设文件为Prefab.xml。文件内容主要为:
<NodeRes>
<Entity pos="-3.0 28.3-0.6"name="A"ReceivedLight="1"LodType="0"path="_common/cube.xml"/>
<Entity pos="-4.54941 7.10348 0"name="B"ReceivedLight="1"LodType="0"path="_common/sphere.xml"/>
</NodeRes>
通过将预设组件文件拖动到游戏场景中,进行实例化成预设组件对象到游戏场景。例如在场景中通过预设组件对象实例化,生成三个预设组件对象,分别为预设组件对象Prefab1,Prefab2,Prefab3。每个预设组件对象都有组件A和组件B。不同的预设组件对象下的组件都设置对应的预设组件对象名称。就比如预设组件对象Prefab1的组件A和组件B设置的预设组件对象名称为Prefab1,以此类推。
获取场景中的所有预设组件对象,形成预设组件列表PrefabList,当前预设组件列表就有Prefab1、Prefab2、Prefab3这三个预设组件对象。
选择预设组件对象Prefab1进行修改属性,这时候预设组件文件就会变成编辑状态,原先的Prefab.xml就会变成Prefab*.xml,表示当前的预设组件对象有进行改变。
预设组件对象修改组件数量时,就比如添加一个新的组件C到预设组件对象Prefab1内,则通过遍历场景中的所有物件和预设组件列表PrefabList,获取到的其他的预设组件对象为Prefab2和Prefab3,然后将Prefab2和Prefab3的所有组件都删除,接着,对Prefab1的组件A和组件B,以及新添加的组件C都进行克隆组件属性,形成新的三个组件,添加到Prefab2和Prefab3中,这样Prefab2和Prefab3都有和Prefab1一模一样属性的组件A、组件B和组件C。
同步完所有预设组件对象属性后,退出预设组件编辑状态,保存预设组件文件。原先预设组件文件为Prefab.xml,编辑状态的预设组件文件为Prefab*.xml,先将Prefab.xml删除,然后将Prefab*.xml的文件内容复制保存到Prefab.xml这个文件,然后将Prefab*.xml删除,这样就实现了预设组件文件覆盖保存。
以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。

Claims (14)

1.一种预设组件同步属性的方法,其特征在于:所述方法包括如下步骤:
步骤S1、在游戏场景中新建空对象,对空对象添加游戏对象,形成具有父子结构的组合体;
步骤S2、通过解析组合体节点信息,将组合体保存成预设组件文件;
步骤S3、对预设组件文件进行实例化成预设组件对象,添加到游戏场景中;
步骤S4、在场景中添加多个预设组件对象后,通过获取场景中所有预设组件对象,形成预设组件列表;
步骤S5、选择一个预设组件对象,进行添加、删除组件、或者修改属性的操作;
步骤S6、对选择的预设组件对象进入预设组件编辑状态,同步场景中所有预设组件对象属性;
步骤S7、退出预设组件编辑状态,保存预设组件文件,达到同步属性的目的。
2.根据权利要求1所述的一种预设组件同步属性的方法,其特征在于:所述步骤S2进一步具体为:通过解析组合体节点信息,获取组合体中所有游戏对象,将组合体保存成预设组件文件;一个组合体通常由多个游戏对象组成,每个游戏对象有其位置、大小、对应的资源模型文件路径的属性信息;保存成的预设组件文件是将这些属性信息保存成一个节点资源。
3.根据权利要求1所述的一种预设组件同步属性的方法,其特征在于:所述步骤S3进一步具体为:通过将预设组件文件拖动到游戏场景中,进行实例化成预设组件对象,添加到游戏场景中;预设组件对象的实例化,并不是普通的复制组件对象的过程;即预设组件对象实例化后产生的新的游戏对象因为在添加到场景时,游戏程序对预设组件对象设置预设标志,将添加到预设组件对象的每个组件对象都设置预设组件对象名字,所以游戏对象依然保持着与预设组件对象的关联,也就是对预设组件对象进行添加组件、修改属性操作,预设组件对象实例化后的游戏对象都会发生相应的改变。
4.根据权利要求3所述的一种预设组件同步属性的方法,其特征在于:所述预设组件对象的实例化就是将预设组件文件进行解析,获取到预设组件文件中的预设组件节点,在游戏场景中生成预设组件对象,作为一个具体的游戏模型,从而将虚拟的预设组件文件信息变为具体的场景物件的过程。
5.根据权利要求1所述的一种预设组件同步属性的方法,其特征在于:所述步骤S5进一步具体为:选择预设组件列表中一个预设组件对象,根据具体的场景搭建需求,对预设组件对象进行添加新组件或者删除原有组件,或者修改位置、大小、旋转的属性,这时候就会触发预设组件对象的状态改变。
6.根据权利要求1所述的一种预设组件同步属性的方法,其特征在于:所述步骤S6进一步具体为:触发预设组件对象的修改状态后,将会进入预设组件对象编辑状态,原先的预设组件文件会变成正在编辑状态,预设组件对象修改的具体内容将保存在程序内存中,以便之后预设组件文件保存覆盖操作;
预设组件对象修改时,将同步场景中所有预设组件对象属性;主要分为两个同步方式:一种是预设组件对象内的组件数量改变,包括在预设组件对象内添加新的组件和删除原有组件,同步时,需要先遍历场景中的所有物件,根据在添加预设组件对象时设置的预设组件对象名字,获取到对应的所有预设组件对象,然后,除了当前编辑的预设组件对象,剩下的所有预设组件对象内的所有组件都删除,这样剩下的所有预设组件对象都成为了空的游戏对象;接着,对当前编辑的预设组件对象内的所有组件进行克隆操作,复制组件对象节点信息和属性信息,遍历所有预设组件对象,添加到剩下的所有预设组件对象中,这样就实现了预设组件对象的组件数量的同步操作;另一种是预设组件对象的组件属性改变,主要修改组件的位置、大小、旋转、颜色、材质的属性;同步方式是通过获取当前修改的组件属性值,然后给剩下的所有预设组件对象,设置获取到的组件属性值,达到属性的同步改变。
7.根据权利要求1所述的一种预设组件同步属性的方法,其特征在于:所述步骤S7进一步具体为:同步完所有预设组件对象属性后,将退出预设组件编辑状态,保存预设组件文件,通过文件复制替换的方式来进行保存;原先生成预设组件对象的文件进行删除,然后将保存在程序内存的预设组件对象保存成预设组件文件,复制到原先的预设组件文件中实现替换,然后删除程序内存保存的预设组件文件;这样就实现了预设组件文件的覆盖保存。
8.一种预设组件同步属性的系统,其特征在于:所述系统包括:游戏对象添加模块、解析模块、实例化模块、预设组件列表生成模块、对象编辑模块、属性同步模块、以及保存模块;
所述游戏对象添加模块,用于在游戏场景中新建空对象,对空对象添加游戏对象,形成具有父子结构的组合体;
所述解析模块,用于通过解析组合体节点信息,将组合体保存成预设组件文件;
所述实例化模块,用于对预设组件文件进行实例化成预设组件对象,添加到游戏场景中;
所述预设组件列表生成模块,用于在场景中添加多个预设组件对象后,通过获取场景中所有预设组件对象,形成预设组件列表;
所述对象编辑模块,选择一个预设组件对象,进行添加、删除组件、或者修改属性的操作;
所述属性同步模块,对选择的预设组件对象进入预设组件编辑状态,同步场景中所有预设组件对象属性;
所述保存模块,用于退出预设组件编辑状态,保存预设组件文件,达到同步属性的目的。
9.根据权利要求8所述的一种预设组件同步属性的系统,其特征在于:所述解析模块的实现方式进一步具体为:通过解析组合体节点信息,获取组合体中所有游戏对象,将组合体保存成预设组件文件;一个组合体通常由多个游戏对象组成,每个游戏对象有其位置、大小、对应的资源模型文件路径的属性信息;保存成的预设组件文件是将这些属性信息保存成一个节点资源。
10.根据权利要求8所述的一种预设组件同步属性的系统,其特征在于:所述实例化模块的实现方式进一步具体为:通过将预设组件文件拖动到游戏场景中,进行实例化成预设组件对象,添加到游戏场景中;预设组件对象的实例化,并不是普通的复制组件对象的过程;即预设组件对象实例化后产生的新的游戏对象因为在添加到场景时,游戏程序对预设组件对象设置预设标志,将添加到预设组件对象的每个组件对象都设置预设组件对象名字,所以游戏对象依然保持着与预设组件对象的关联,也就是对预设组件对象进行添加组件、修改属性操作,预设组件对象实例化后的游戏对象都会发生相应的改变。
11.根据权利要求10所述的一种预设组件同步属性的系统,其特征在于:所述预设组件对象的实例化就是将预设组件文件进行解析,获取到预设组件文件中的预设组件节点,在游戏场景中生成预设组件对象,作为一个具体的游戏模型,从而将虚拟的预设组件文件信息变为具体的场景物件的过程。
12.根据权利要求8所述的一种预设组件同步属性的系统,其特征在于:所述对象编辑模块的实现方式进一步具体为:选择预设组件列表中一个预设组件对象,根据具体的场景搭建需求,对预设组件对象进行添加新组件或者删除原有组件,或者修改位置、大小、旋转的属性,这时候就会触发预设组件对象的状态改变。
13.根据权利要求8所述的一种预设组件同步属性的系统,其特征在于:所述属性同步模块的实现方式进一步具体为:触发预设组件对象的修改状态后,将会进入预设组件对象编辑状态,原先的预设组件文件会变成正在编辑状态,预设组件对象修改的具体内容将保存在程序内存中,以便之后预设组件文件保存覆盖操作;
预设组件对象修改时,将同步场景中所有预设组件对象属性;主要分为两个同步方式:一种是预设组件对象内的组件数量改变,包括在预设组件对象内添加新的组件和删除原有组件,同步时,需要先遍历场景中的所有物件,根据在添加预设组件对象时设置的预设组件对象名字,获取到对应的所有预设组件对象,然后,除了当前编辑的预设组件对象,剩下的所有预设组件对象内的所有组件都删除,这样剩下的所有预设组件对象都成为了空的游戏对象;接着,对当前编辑的预设组件对象内的所有组件进行克隆操作,复制组件对象节点信息和属性信息,遍历所有预设组件对象,添加到剩下的所有预设组件对象中,这样就实现了预设组件对象的组件数量的同步操作;另一种是预设组件对象的组件属性改变,主要修改组件的位置、大小、旋转、颜色、材质的属性;同步方式是通过获取当前修改的组件属性值,然后给剩下的所有预设组件对象,设置获取到的组件属性值,达到属性的同步改变。
14.根据权利要求8所述的一种预设组件同步属性的系统,其特征在于:所述保存模块的实现方式进一步具体为:同步完所有预设组件对象属性后,将退出预设组件编辑状态,保存预设组件文件,通过文件复制替换的方式来进行保存;原先生成预设组件对象的文件进行删除,然后将保存在程序内存的预设组件对象保存成预设组件文件,复制到原先的预设组件文件中实现替换,然后删除程序内存保存的预设组件文件;这样就实现了预设组件文件的覆盖保存。
CN202111078225.5A 2021-09-15 2021-09-15 一种预设组件同步属性的方法及其系统 Active CN113730920B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111078225.5A CN113730920B (zh) 2021-09-15 2021-09-15 一种预设组件同步属性的方法及其系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111078225.5A CN113730920B (zh) 2021-09-15 2021-09-15 一种预设组件同步属性的方法及其系统

Publications (2)

Publication Number Publication Date
CN113730920A true CN113730920A (zh) 2021-12-03
CN113730920B CN113730920B (zh) 2023-10-20

Family

ID=78738914

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111078225.5A Active CN113730920B (zh) 2021-09-15 2021-09-15 一种预设组件同步属性的方法及其系统

Country Status (1)

Country Link
CN (1) CN113730920B (zh)

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105528350A (zh) * 2014-09-29 2016-04-27 深圳中兴力维技术有限公司 基于unity3D平台的复杂场景与后台数据映射同步方法及装置
CN107678970A (zh) * 2017-10-20 2018-02-09 网易(杭州)网络有限公司 自动化测试方法及装置、存储介质、电子设备
CN107767434A (zh) * 2017-09-13 2018-03-06 福建天晴数码有限公司 虚拟现实技术中纹理贴图配置信息的获取方法、存储介质
US20180101327A1 (en) * 2014-12-31 2018-04-12 International Business Machines Corporation Linking common attributes among a set of synchronized vaults
CN108339270A (zh) * 2018-02-09 2018-07-31 网易(杭州)网络有限公司 游戏场景中静态组件的处理方法、渲染方法及装置
CN110639207A (zh) * 2019-09-20 2020-01-03 北京代码乾坤科技有限公司 游戏数据同步方法、装置、存储介质及处理器
CN111292403A (zh) * 2020-03-10 2020-06-16 黄海波 一种创建活动布娃娃的方法
CN111870949A (zh) * 2020-07-31 2020-11-03 深圳市腾讯网域计算机网络有限公司 游戏场景中的对象处理方法、装置及电子设备
CN112269576A (zh) * 2020-08-07 2021-01-26 北京沃东天骏信息技术有限公司 一种组件展示方法、装置、服务器和存储介质

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105528350A (zh) * 2014-09-29 2016-04-27 深圳中兴力维技术有限公司 基于unity3D平台的复杂场景与后台数据映射同步方法及装置
US20180101327A1 (en) * 2014-12-31 2018-04-12 International Business Machines Corporation Linking common attributes among a set of synchronized vaults
CN107767434A (zh) * 2017-09-13 2018-03-06 福建天晴数码有限公司 虚拟现实技术中纹理贴图配置信息的获取方法、存储介质
CN107678970A (zh) * 2017-10-20 2018-02-09 网易(杭州)网络有限公司 自动化测试方法及装置、存储介质、电子设备
CN108339270A (zh) * 2018-02-09 2018-07-31 网易(杭州)网络有限公司 游戏场景中静态组件的处理方法、渲染方法及装置
CN110639207A (zh) * 2019-09-20 2020-01-03 北京代码乾坤科技有限公司 游戏数据同步方法、装置、存储介质及处理器
CN111292403A (zh) * 2020-03-10 2020-06-16 黄海波 一种创建活动布娃娃的方法
CN111870949A (zh) * 2020-07-31 2020-11-03 深圳市腾讯网域计算机网络有限公司 游戏场景中的对象处理方法、装置及电子设备
CN112269576A (zh) * 2020-08-07 2021-01-26 北京沃东天骏信息技术有限公司 一种组件展示方法、装置、服务器和存储介质

Also Published As

Publication number Publication date
CN113730920B (zh) 2023-10-20

Similar Documents

Publication Publication Date Title
JP5095847B2 (ja) 階層リストを介した任意グラフィックのテキストの編集
US20080049015A1 (en) System for development of 3D content used in embedded devices
CN104007967B (zh) 一种基于可扩展标记语言的用户界面生成方法和装置
US8026910B2 (en) Offline optimization pipeline for 3D content in embedded devices
CN112184856A (zh) 支持多图层特效及动画混合的多媒体处理装置
CN108647017A (zh) 一种参数化快速生成三维互动与仿真应用软件的集成平台
CN111552468B (zh) 一种基于Unity的预制件编辑方法、装置及存储介质
US11733973B2 (en) Interactive graphic design system to enable creation and use of variant component sets for interactive objects
US10235493B2 (en) Simplifying a computer-aided design model while retaining references
CN107067200B (zh) 一种物料清单数据的操作方法及装置
CN114528613A (zh) 一种智慧园区数字孪生系统可视化编辑方法
WO2023142614A1 (zh) 游戏对象的编辑方法、装置和电子设备
CN108256034A (zh) 数据迁移方法及设备
CN116681835A (zh) 一种基于虚拟引擎的三维模型制作方法及系统
CN105426601A (zh) 一种基于bim的多样性设计方案汇报方法及其系统
CN103279347B (zh) 一种通用的软件产品线领域模型与应用模型的同步方法
JPH07219754A (ja) 画面遷移図を用いた要求定義支援装置
CN113730920B (zh) 一种预设组件同步属性的方法及其系统
WO2001060060A1 (en) Control of sequence of video modifying operations
Jing Design and implementation of 3D virtual digital campus-based on unity3d
CN109783596B (zh) 一种基于Angular组件的ArcGIS地图配置预览方法
US20120256946A1 (en) Image processing apparatus, image processing method and program
CN101714148B (zh) 计算机辅助设计中的重用方法及装置
Santoni et al. LevelMerge: collaborative game level editing by merging labeled graphs
CN109241571B (zh) 一种基于crdt的支持特征cad模型的实时协同编辑方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant