一种基于Unity3D的数据集引用方法及系统
技术领域
本发明涉及一种基于Unity3D的数据集引用方法及系统,属于计算机三维动画数据处理领域。
背景技术
使用Unity3D引擎进行游戏开发的过程中,一般使用Prefab作为复合资源的载体。
为了降低资源在结构上冗余提升制作效率,常对多个结构相似的Prefab提取出公共部分,整理成独立的Prefab,各个资源对公共部分进行引用使用。
而由于Unity3D中,Prefab被设计为最小粒度单位,并没有提供Prefab之间的引用和反向更新功能。
Unity3D提供仅有的Prefab的引用能力,只存在于对Prefab文件进行编辑的阶段,一旦对其进行应用保存操作,被引用的对象将强制链接到父对象,成为一个整体
产生的缺点在于,本因需要被重复引用而进行分离的子Prefab文件被链接到各个独立的资源中去,失去了引用/被引用的信息,无法进行反向更新,资源复用意义大打折扣。
发明内容
针对现有技术的不足,本发明的技术方案提供了一种基于Unity3D的数据集引用方法及系统,用于实现资源数据集的高效复用。
本发明的技术方案1.一种基于Unity3D的数据集引用方法,其特征在于,该方法包括:A.创建数据集对象,同时创建数据集对象对应的引用组件,所述引用组件用于替代对数据集的引用;B.对数据集对象所产生的事件进行监听,当数据集发生数据变动并保存时,移除因引用所述引用组件产生的实例化对象,并重新生成实例化对象并保存。
根据所述的基于Unity3D的数据集引用方法,其中的步骤A还包括:S21,创建基于基于Unity3D的数据集对象,生成与数据集对象对应的引用组件,其中引用组件存储有数据集对象的唯一标识符;S22,生成实例化对象,其中实例化对象用于第三方数据或/和对象的访问。
根据所述的基于Unity3D的数据集引用方法,其中步骤S22访问包括以下步骤:根据数据集的唯一标识符获取数据集的存储路径获取数据集,对数据集对象进行实例化,并将实例化对象挂载于对应的数据或/和对象。
根据所述的基于Unity3D的数据集引用方法,其中步骤B还包括以下步骤:S41,当数据集对象发生数据变更时,对数据集对象进行遍历确认是否使用引用组件,若存在则进一步检查是否实例化预览对象;S42,删除已经实例化对象,并保存数据集对象;S43,重新生成数据集对象对应的用于预览的实例。
根据所述的基于Unity3D的数据集引用方法,其中步骤B还包括用于发布时的数据集透明处理,其特征在于:S51,遍历资源数据包中的资源列表,获取数据集资源,进一步获取具有引用组件的数据集资源;S52,对具有引用组件的数据集资源进行引用解除并对对应的数据集资源进行打包。
根据所述的基于Unity3D的数据集引用方法,其中步骤S52还包括以下步骤:对引用组件的数据集资源进行解除时,停止对数据集数据变化事件的监听,并对引用组件使用预览实例化以及重新保存数据集,保存完后恢复对数据集的数据变化事件监听。
根据所述的任意基于Unity3D的数据集引用方法,其中的数据集为Prefab数据。
本发明的技术方案还包括根据上述任意方法的一种基于Unity3D的数据集引用方法,其中该系统包括:关联模块,用于创建数据集对象,同时创建数据集对象对应的引用组件,所述引用组件用于替代对数据集的引用;引用模块,用于对数据集对象所产生的事件进行监听,当数据集发生数据变动并保存时,移除因引用所述引用组件产生的实例化对象,并重新生成实例化对象并保存。
本发明的有益效果为:提出的Prefab引用实施方法,作为补充的资源制作管理手段,弥补了Unity3D引擎原生不支持prefab引用的缺点,在资源制作阶段提供被引用Prefab对象的反向更新能力,从全局上提高资源迭代翻新效率,增强全局资源管理能力。
附图说明
图1所示为根据本发明实施方式的整体流程图;
图2所示为根据本发明实施方式的Prefab引用行为流程图;
图3所示为根据本发明实施方式的Prefab引用组件预览流程图;
图4所示为根据本发明实施方式的Prefab的一次引用流程图;
图5所示为根据本发明实施方式的Prefab的资源透明流程图;
图6所示为根据本发明实施方式的Prefab解除引用流程图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。本发明的基于Unity3D的数据集引用方法及系统适用于三维游戏动画图像的数据集处理。
图1所示为根据本发明实施方式的整体流程图。
其具体如下:A.创建数据集对象,同时创建数据集对象对应的引用组件,所述引用组件用于替代对数据集的引用;B.对数据集对象所产生的事件进行监听,当数据集发生数据变动并保存时,移除因引用所述引用组件产生的实例化对象,并重新生成实例化对象并保存。
图2所示为根据本发明实施方式的Prefab引用行为流程图。
其包括以下步骤:创建新的Prefab数据;为Prefab数据添加引用组件;将被引用的Prefab的唯一标识信息记录于组件;并生成预览实例化对象。
图3所示为根据本发明实施方式的Prefab引用组件预览流程图。其包括以下步骤:
根据唯一标识符获取资源路径;根据资源路径获取Prefab对象;由Prefab对象实例化;
将实例化对象挂载于当前对象下。
图4所示为根据本发明实施方式的Prefab的一次引用流程图。其具体如下所示:遍历更新的数据集对象是否引用了组件;如果没有则结束,如果有则检查是否实例化了预览对象;进一步,删除预览对象并重新保存Prefab;以及,重新生成预览实例。
图5所示为根据本发明实施方式的Prefab的资源透明流程图。其具体包括以下步骤:
遍历打包资源列表;选择Prefab类型资源;选择使用了引用组件的Prefab资源;进行解引用;对资源进行打包;利用SVN等控制软件对被修改资源进行还原。
图6所示为根据本发明实施方式的Prefab解除引用流程图。其具体包括以下步骤:
停止对Prefab修改事件的监听;对引用组件使用预览实例化;重新保存Prefab;进而恢复对Prefab修改事件的监听。
以上所述,只是本发明的较佳实施例而已,本发明并不局限于上述实施方式,只要其以相同的手段达到本发明的技术效果,都应属于本发明的保护范围。在本发明的保护范围内其技术方案和/或实施方式可以有各种不同的修改和变化。