在Unity的play模式下修改预制的方法、系统、设备及介质与流程

文档序号:37641875发布日期:2024-04-18 18:04阅读:12来源:国知局
在Unity的play模式下修改预制的方法、系统、设备及介质与流程

本发明涉及计算机,特别是在unity的play模式下修改预制的方法、系统、设备及介质。


背景技术:

1、unity是一款是实时3d互动内容创作和运营平台,其界面直观,架构非常简单(包括对象和组件)。此外,unity还具有强大的图形渲染以及引擎性能,无论是策划人员、美术人员、测试人员还是程序员都可以很好地使用unity进行游戏创作。

2、unity在2018.3以前的版本中提供了一个属性“executeineditmode”,这个属性是为了在editor模式下也能完整地执行脚本的monobehaviour周期。但是,“executeineditmode”属性会导致在play模式下无法打开预制体进行编辑和更改,而实际开发中该属性会被大量地使用。这意味着,当运行游戏时,若需要修改预制节点,则需要先退出play模式,再打开预制修改,进入play模式查看实际的运行效果,导致整个修改预制的操作繁琐且耗时。

3、因此,现有技术中修改预制的方法存在操作繁琐、效率较低的问题。


技术实现思路

1、本发明的主要目的在于提供了在unity的play模式下修改预制的方法、系统、设备及介质,旨在解决现有的修改预制的方法操作繁琐、效率较低的技术问题。

2、为实现上述目的,本发明提供了在unity的play模式下修改预制的方法,其包括以下步骤:s100、加载每个预制资源时,获取加载预制每个节点及节点对应组件的instanceid;s200、基于加载预制生成对应的实例化预制时,获取实例化预制每个节点及节点对应组件的instanceid;s300、将实例化预制的instanceid与加载预制的instanceid一一对应,构建以实例化预制的instanceid为key,加载预制的instanceid为value的〈key,value〉结构,得到加载预制与实例化预制的映射关系;s400、获取用户选择指令,保存用户选择指令中所选节点的当前组件信息以及组件对应的属性信息;所述用户选择指令具体为用户在play模式下所选的需要保存的实例化预制节点;s500、基于所选节点,根据预设修改方式对所选节点的对应组件进行修改,并根据映射关系将实例化预制的修改同步应用至加载预制;所述修改具体为更改预制节点组件或删除预制节点组件或增加预制节点组件。

3、可选的,步骤s300至少包括以下步骤:s310、基于实例化预制,遍历实例化预制所有的子节点,遍历的过程中以同样的路径获取加载预制中对应的子节点;s320、加载实例化预制节点所有对应组件的instanceid以及加载预制节点所有对应组件的instanceid,并将实例化预制的instanceid与加载预制的instanceid一一对应;s330、构建以实例化预制的instanceid为key,加载预制的instanceid为value的〈key,value〉结构,得到加载预制与实例化预制的映射关系。

4、可选的,步骤s400所述保存用户选择指令中所选节点的当前组件信息以及组件对应的属性信息,具体是通过unity中的serializedobject类保存所选节点的当前组件信息,通过unity中的serializedproperty类保存当前组件对应的属性信息。

5、可选的,步骤s400至少包括以下步骤:s410、将所选节点的当前组件信息作为参数传递至serializedobject类,基于serializedobject类对当前组件信息进行解析处理,得到当前组件存储的属性字段以及对应的值;s411、将当前组件存储的属性字段以及对应的值保存为serializedproperty类。

6、可选的,步骤s500中,当所述修改具体为更改预制节点组件时,步骤s500至少包括以下步骤:s510、基于serializedobject类的getiterator接口和nextvisible接口,遍历serializedobject类所存储的所有serializedproperty属性;s511、基于加载预制与实例化预制的映射关系,获取加载预制中对应节点的对应组件的serializedproperty属性;所述对应节点具体为加载预制中与所选节点对应的加载预制节点;s512、调用serializedproperty类的dataequals接口,将步骤s510与s511的两个serializedproperty属性进行对比,判断两者是否一致,若是,则返回true,若否,则返回false,分别显示两个serializedproperty属性并执行步骤s513;s513、获取用户所要保存回实例化预制的serializedproperty属性,基于加载预制与实例化预制的映射关系获取加载预制的对应节点,并将对应的serializedproperty属性写回至加载预制中。

7、可选的,步骤s500中,当所述修改具体为删除预制节点组件时,则步骤s500至少包括以下步骤:s520、基于加载预制与实例化预制的映射关系,遍历映射数据中所选节点对应组件的instanceid以及加载预制中对应节点的对应组件的instanceid;所述对应节点具体为加载预制中与所选节点对应的加载预制节点;s521、判断是否存在仅存在于加载预制中的instanceid,若是,则认定所选节点已删除该instanceid对应的组件,执行步骤s522;s522、基于加载预制与实例化预制的映射关系获取加载预制的对应节点,并调用destroyimmediate接口删除对应节点的对应组件;所述对应节点具体为加载预制中与所选节点对应的加载预制节点。

8、可选的,步骤s500中,当所述修改具体为增加预制节点组件时,则步骤s500至少包括以下步骤:s530、遍历所选节点的组件;s531、将步骤s530的遍历结果与步骤s200获取的实例化预制节点对应组件的instanceid进行对比,判断遍历结果是否均存在对应的instanceid,若否,则认定所选节点存在新增组件,执行步骤s532;s532、先调用componentutility.copycomp onent(component)接口对新增组件进行复制,再调用componentutility.pastecomponentasnew(root)接口将新增组件复制至加载预制节点。

9、与所述在unity的play模式下修改预制的方法相对应的,本发明提供一种在unity的play模式下修改预制的系统,其包括:第一数据获取模块,加载每个预制资源时,获取加载预制每个节点及节点对应组件的instanceid;第二数据获取模块,用于基于加载预制生成对应的实例化预制时,获取实例化预制每个节点及节点对应组件的instanceid;映射关系构建模块,用于将实例化预制的instanceid与加载预制的instanceid一一对应,构建以实例化预制的instanceid为key,加载预制的instanceid为value的〈key,value〉结构,得到加载预制与实例化预制的映射关系;用户选择指令获取模块,用于获取用户选择指令,保存用户选择指令中所选节点的当前组件信息以及组件对应的属性信息;所述用户选择指令具体为用户在play模式下所选的需要保存的实例化预制节点;修改模块,用于基于所选节点,根据预设修改方式对所选节点的对应组件进行修改,并根据映射关系将实例化预制的修改同步应用至加载预制;所述修改具体为更改预制节点组件或删除预制节点组件或增加预制节点组件。

10、此外,为实现上述目的,本发明还提供一种在unity的play模式下修改预制的设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的程序,所述处理器执行所述程序时实现如上文所述的在unity的play模式下修改预制的方法的步骤。

11、此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有在unity的play模式下修改预制的程序,所述在unity的play模式下修改预制的程序被处理器执行时实现如上文所述的在unity的play模式下修改预制的方法的步骤。

12、本发明的有益效果是:

13、(1)与现有技术相比,本发明通过将实例化预制的instanceid与加载预制的instanceid一一对应,构建以实例化预制的instanceid为key,加载预制的instanceid为value的〈key,value〉结构,得到加载预制与实例化预制的映射关系;将实例化预制的instanceid和加载预制的instanceid做映射,确保有个唯一标识符用于定位到加载预制上,以达到在play模式下能直接将对实例化预制的改动同步应用在加载预制上,不需要反复切入切出play模式,因此与现有技术相比,本发明操作简便、效率较高;

14、(2)与现有技术相比,本发明通过unity中的serializedobject类保存所选节点的当前组件信息,通过unity中的serializedproperty类保存当前组件对应的属性信息,能够为后续基于所选节点,根据预设修改方式对所选节点的对应组件进行修改的操作打下基础,确保能够高效、准确地执行修改操作;

15、(3)与现有技术相比,本发明通过将所选节点对应组件的serializedproperty属性与加载预制中对应节点的对应组件的serializedproperty属性进行对比,能够确定两者是否一致,并对所选节点的对应组件进行更改,再将更改写回至加载预制中;

16、(4)与现有技术相比,本发明通过遍历映射数据中所选节点对应组件的instanceid以及加载预制中对应节点的对应组件的instanceid,判断是否存在仅存在于加载预制中的instanceid;能够确定所选节点已删除的组件,并调用destroyimmediate接口删除对应节点的对应组件;

17、(5)与现有技术相比,本发明通过将步骤s530的遍历结果与步骤s200获取的实例化预制节点对应组件的instanceid进行对比,判断遍历结果是否均存在对应的instanceid;能够确定是否存在新增组件,并将新增组件复制至加载预制节点。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1