具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。
在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
首先,对本发明一个或多个实施例涉及的名词术语进行解释。
事件(Event):用来驱动游戏中的音频。Event来封装播放等声音行为,一个Event可以包含定义的多个行为,比如播放、停止播放、改变音量等,这些Event将Action(动作)应用于工程层级结构中的不同声音对象或对象组。用户选择的动作用于指定的对象是否播放、停止、暂停等。
声库(SoundBank):游戏的音频和振动数据置于声库中。声库大体上是指包含游戏音频和振动数据、媒体或两者兼有的文件。这些声库在游戏的特定时间点加载到游戏平台内存中。
在本申请中,提供了一种数据导入虚幻引擎的方法和装置、计算设备及计算机可读存储介质,在下面的实施例中逐一进行详细说明。
图1是示出了根据本说明书一实施例的计算设备100的结构框图。该计算设备100的部件包括但不限于存储器110和处理器120。处理器120与存储器110通过总线130相连接,数据库150用于保存数据。
计算设备100还包括接入设备140,接入设备140使得计算设备100能够经由一个或多个网络160通信。这些网络的示例包括公用交换电话网(PSTN)、局域网(LAN)、广域网(WAN)、个域网(PAN)或诸如因特网的通信网络的组合。接入设备140可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC))中的一个或多个,诸如IEEE802.11无线局域网(WLAN)无线接口、全球微波互联接入(Wi-MAX)接口、以太网接口、通用串行总线(USB)接口、蜂窝网络接口、蓝牙接口、近场通信(NFC)接口,等等。
在本说明书的一个实施例中,计算设备100的上述部件以及图1中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图1所示的计算设备结构框图仅仅是出于示例的目的,而不是对本说明书范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
计算设备100可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或PC的静止计算设备。计算设备100还可以是移动式或静止式的服务器。
其中,处理器120可以执行图2所示方法中的步骤。图2是示出了根据本申请第一实施例的数据导入虚幻引擎的方法的示意性流程图,包括步骤202至步骤208。
步骤202:接收原始数据,获取所述原始数据中关联的声库数据和事件数据。
所述原始数据是在音频设计软件中制作好的事件数据与声库数据,在音频设计软件中将事件数据和声库数据关联完成,获取在音频设计软件中关联的声库数据和事件数据。
上述音频设计软件可以是Wwise,Wwise是一种非线性创作工具,用于创建音频和振动素材结构、定义传播、管理声音、音乐和振动集成、分析播放性能以及创建声库。
步骤204:根据关联的声库数据中的声库标记和事件数据中的事件标记,构建所述声库数据的声库标记与事件数据的事件标记的对应关系。
所述步骤204通过下述步骤2042至步骤2044实现。
步骤2042:分别提取关联的声库数据中的声库标记和事件数据中的事件标记。
所述声库数据中有一个声库标记,则一个声库数据关联一个事件数据;或者是所述声库数据中有两个以上的声库标记,则一个声库数据关联一个或两个以上的事件数据;或者是一个所述事件数据中有两个以上的事件标记,则一个事件数据能够关联一个或两个以上的声库数据。
步骤2044:构建所述声库数据中的声库标记与事件数据的事件标记的对应关系表。
所述声库数据中的声库标记即声库的ID,上述事件数据中的事件标记即事件的ID,关联的声库数据中的声库标记和事件数据中的事件标记是相同或对应的。
需要说明的是,与所述声库数据对应的声库标记相同的事件标记,该事件标记为某一路径的标记相同的情况下,那么这个路径下的所有事件数据都与此声库数据关联,也就是说,在文件夹下的所有事件数据都会与某个声库数据关联。
上述声库数据中的每个声库节点都包含一个ID,下面以声库数据对应的代码举例说明,下面声库数据包括四个声库标记,
下述代码中的第一行中的ID=“{A}”、第三行ID=“{a}”、第四行ID=“{b}”、第五行ID=“{c}”,其中的A、a、b和c均为声库数据的声库标记。
与上述声库数据关联的事件数据的代码如下所示,下述代码的第一行ID=“{a}”,其中的a即为事件数据的事件标记。
步骤206:向虚幻引擎中分别导入所述声库数据和事件数据。
向虚幻引擎中分别导入所述声库数据和事件数据,或者说在虚幻引擎中分别创建声库数据资源和事件数据资源的过程,即导入虚幻引擎中的声库数据和事件数据并未关联。
向虚幻引擎中分别导入的所述声库数据和事件数据保存至同一路径下,避免加载声库数据和事件数据路径过长,提高声库数据和事件数据的加载速度。
参见图3所示,在向虚幻引擎中分别导入所述声库数据和事件数据之前,还包括下述步骤。
步骤302:查找所述虚幻引擎中的本地声库数据和本地事件数据。
所述虚幻引擎本身存储的数据包括本地声库数据和本地事件数据。
步骤304:比较所述本地声库数据和本地事件数据与导入虚幻引擎的声库数据和事件数据,将不存在于所述声库数据中的本地声库数据和/或与导入虚幻引擎中的事件数据不相同的本地事件数据添加至待删列表中。
由于需要将向虚幻引擎中分别导入的所述声库数据和事件数据关联,其中,将不存在于所述声库数据中的本地声库数据添加至待删列表中,也就是本地声库数据不存在于待导入的声库数据中,则将本地声库数据作为冗余数据添加至待删列表中。对于所述本地事件数据与导入虚幻引擎的事件数据不相同的情况下,同样地,将所述不相同的本地事件数据作为冗余数据添加至待删列表中,释放虚幻引擎中的存储资源。
步骤306:判断所述待删列表中所述本地声库数据和/或本地事件数据是否处于引用状态,若是,执行步骤308,若否,执行步骤310。
步骤308:发送提示信息。
若待删列表中所述本地声库数据和/或本地事件数据处于引用状态,所述提示信息为是否删除本地声库数据和/或本地事件数据,若是,则取消被删除声库数据和/或本地事件数据的关联关系并删除本地声库数据或本地事件数据,若否,则停止向虚幻引擎导入声库数据和/或本地事件数据,这样避免删除正在使用的本地声库数据和/或本地事件数据。
步骤310:删除所述本地声库数据和/或本地事件数据。
删除不使用的所述本地声库数据和/或本地事件数据,减少虚幻引擎中内存的占用,优化虚拟引擎中的本地资源。
步骤208:根据所述声库数据的声库标记与事件数据的事件标记的对应关系,关联所述虚幻引擎中的所述声库数据和事件数据。
在上述步骤中创建了声库数据的声库标记与事件数据的事件标记的对应关系,首先创建声库数据,根据声库数据中的声库标记,来确定声库标记对应的事件标记,来找到事件标记的事件数据,在所述虚幻引擎中,实现将声库数据与事件数据的关联。
本申请的上述第一实施例中,在音频制作软件中设计好事件与声库,将关联好的事件和声库由音频设计软件导入虚幻引擎过程中,实现声库数据与事件数据的自动关联,无需设计人员在虚幻引擎中要重新创建声库并进行命名以及手动找出并选择新建的声库与导入的事件进行关联,杜绝人工操作出现错误的情况,大幅提高了游戏的开发效率,降低游戏的制作成本。
图4是示出了根据本申请第二实施例的数据导入虚幻引擎的方法的示意性流程图,包括步骤402至步骤416。
步骤402:接收原始数据,所述原始数据的节点包括声库节点和事件节点。
步骤404:基于所述节点中的声库节点对应的单个声库数据,确定单个所述声库数据中的特征数据作为第一标签。
比如上述声库数据对应的代码,此处不再赘述上述声库数据对应的代码,可以将第一行的“SoundBank”为特征数据,将“SoundBank”作为第一标签。
步骤406:遍历所述节点中的每个节点,将包含所述第一标签的节点对应的数据作为声库数据。
本步骤是要确定包含所述第一标签的节点对应的数据,包含所述第一标签的节点对应的数据为声库数据,确定单个所述声库数据中的特征数据作为第一标签,通过根据第一标签获得原始数据中的所有声库数据,能够方便且完整地获得需要的目标数据。
步骤408:基于所述节点中的事件节点对应的单个事件数据,确定单个所述事件数据中的特征数据作为第二标签。
步骤410:遍历所述节点中的每个节点,将包含所述第二标签的节点对应的数据作为事件数据。
可以将上述事件数据对应的代码中“Event”作为第二标签,来获得原始数据中的事件数据,所述原始数据中所有事件数据的获得与上述获得声库数据同理,此处不再赘述。
步骤412:根据关联的声库数据中的声库标记和事件数据中的事件标记,构建所述声库数据的声库标记与事件数据的事件标记的对应关系。
步骤414:向虚幻引擎中分别导入所述声库数据和事件数据。
所述步骤414包括S4141至S41410。
所述声库数据包括n个,所述事件数据包括m个。
S4141:判断待导入的第i个声库数据是否与虚幻引擎中的本地声库数据相同,其中,1≤i≤n,若是,执行S4142,若否,执行S4143。
上述待导入的第i个声库数据与虚幻引擎中的本地声库数据相同,即第i个声库数据的文件名称与虚幻引擎中的本地声库数据的文件名称相同。
S4142:将i自增1,判断i是否大于n,若是,执行S4144,若否,执行S4141。
S4143:将待导入的声库数据导入虚幻引擎中并添加至保存列表中。
换言之,若待导入虚幻引擎中的声库数据已存在于虚幻引擎中,无需往虚幻引擎中导入并保存,则直接进行下一个待导入的声库数据的判断,若待导入的声库数据不存在于虚幻引擎中,再将所述声库数据导入虚幻引擎中并添加至保存列表中,降低导入后保存的时间,提高数据的导入效率。
S4144:完成导入。
S4145:判断待导入的第j个事件数据是否与虚幻引擎中的本地事件数据相同,其中1≤j≤m,若是,执行S4146,若否,执行S41410。
上述待导入的第j个事件数据与虚幻引擎中的本地事件数据相同,即第j个声库数据的文件名称与虚幻引擎中的本地事件数据的文件名称相同。
S4146:比较所述事件数据关联的声库数据与本地事件数据关联的本地声库数据。
S4147:在所述事件数据关联的声库数据与本地事件数据关联的声库数据相同的情况下,执行S4149。
若待导入虚幻引擎中的事件数据已存在于虚幻引擎中,即待导入的事件数据与本地事件数据相同,并且,待导入的事件数据与虚幻引擎中的本地事件数据的属性相同,即待导入的事件数据关联的声库数据与本地事件数据关联的本地声库数据相同,无需导入并保存与本地事件相同的待导入事件,直接进行下一个待导入事件数据的判断,避免与本地事件数据相同的待导入事件虚幻引擎中,降低虚幻引擎中内存的占用,而且减少导入虚幻引擎中的数据量,提高数据导入虚幻引擎中的速度。
S4148:在所述事件数据关联的声库数据与本地事件数据关联的本地声库数据不相同的情况下,调整所述本地事件数据的事件标记后添加至保存列表,执行S4149;
所述事件数据关联的声库数据与本地事件数据关联的本地声库数据不相同的情况下,通过调整所述本地事件数据的事件标记后添加至保存列表,进一步降低虚幻引擎中内存的占用且提高数据导入虚幻引擎中的速度。
S4149:将j自增1,判断j是否大于m,若是,执行S4144,若否,执行S4145;
S41410:将所述事件数据导入虚幻引擎中并添加至保存列表中。
在待导入的事件数据与虚幻引擎中的本地事件数据本身就有差异的情况下,直接将所述事件数据导入虚幻引擎中并添加至保存列表中。
步骤416:根据所述声库数据的声库标记与事件数据的事件标记的对应关系,关联所述虚幻引擎中的所述声库数据和事件数据。
需要说明的是,上述待导入的声库数据和事件数据可以分别向虚幻引擎中导入,当然,上述待导入的声库数据和事件数据也可以同时向虚幻引擎中导入。
本申请的上述实施例中,通过判断待导入的每个声库数据是否与虚幻引擎中的本地声库数据相同,以及比较所述事件数据关联的声库数据与本地事件数据关联的本地声库数据,不仅避免与本地数据相同的待导入数据导入虚幻引擎中,降低虚幻引擎中内存的占用,而且减少导入虚幻引擎中的数据量,提高数据导入虚幻引擎中的速度。
图5是示出了根据本申请第三实施例的数据导入虚幻引擎的方法的示意性流程图,包括步骤502至步骤512。
步骤502:接收原始数据,获取所述原始数据中关联的声库数据和事件数据。
步骤504:根据关联的声库数据中的声库标记和事件数据中的事件标记,构建所述声库数据的声库标记与事件数据的事件标记的对应关系。
步骤506:向虚幻引擎中分别导入所述声库数据和事件数据。
步骤508:提取所述虚幻引擎中导入的所述目标声库数据中的声库标记。
一个目标声库数据中的声库标记可以是一个或两个以上,下述步骤中与目标声库关联的事件数据的数量可以是一个或两个以上。
步骤510:根据所述目标声库数据的声库标记与事件数据的事件标记的对应关系,查找与所述目标声库数据中的声库标记对应的事件标记作为目标事件标记,确定所述目标事件标记对应的目标事件数据。
基于提取的所述虚幻引擎中导入的一个目标声库数据中的声库标记,来查找与所述目标声库数据中的声库标记对应的事件标记作为目标事件标记,目标事件标记可以是一个或两个以上。
步骤512:关联所述虚幻引擎中分别导入的目标声库数据与所述目标事件数据。
上述完成关联一个目标声库数据与事件数据后,再继续下一个声库数据的关联,直至完成上述声库数据的关联。
本申请的上述第一实施例中,通过提取所述虚幻引擎中导入的所述目标声库数据中的声库标记,根据所述目标声库数据的声库标记与事件数据的事件标记的对应关系,查找与所述目标声库数据中的声库标记对应的事件标记作为目标事件标记,确定所述目标事件标记对应的目标事件数据,确保能够准确地关联所述虚幻引擎中分别导入的目标声库数据与所述目标事件数据,无需设计人员在虚幻引擎中要重新创建声库并进行命名以及手动找出并选择新建的声库与导入的事件进行关联,杜绝人工操作出现错误的情况,大幅提高了游戏的开发效率,降低游戏的制作成本。
图6是示出了根据本申请一实施例的数据导入虚幻引擎的方法的装置结构示意图,包括:
接收模块602,被配置为接收原始数据,获取所述原始数据中关联的声库数据和事件数据;
构建模块604,被配置为根据关联的声库数据中的声库标记和事件数据中的事件标记,构建所述声库数据的声库标记与事件数据的事件标记的对应关系;
导入模块606,被配置为向虚幻引擎中分别导入所述声库数据和事件数据;
关联模块608,被配置为根据所述声库数据的声库标记与事件数据的事件标记的对应关系,关联所述虚幻引擎中的所述声库数据和事件数据。
所述接收模块602被进一步配置为所述原始数据的节点包括声库节点和事件节点;
基于所述节点中的声库节点对应的单个声库数据,确定单个所述声库数据中的特征数据作为第一标签;
遍历所述节点中的每个节点,将包含所述第一标签的节点对应的数据作为声库数据;
基于所述节点中的事件节点对应的单个事件数据,确定单个所述事件数据中的特征数据作为第二标签;
遍历所述节点中的每个节点,将包含所述第二标签的节点对应的数据作为事件数据。
所述构建模块被进一步配置为分别提取关联的声库数据中的声库标记和事件数据中的事件标记;
构建所述声库数据中的声库标记与事件数据的事件标记的对应关系表。
所述数据导入虚幻引擎的装置还包括:
所述虚幻引擎中存储的数据包括本地声库数据和本地事件数据;
查找模块,被配置为查找所述虚幻引擎中的本地声库数据和本地事件数据;
比较模块,被配置为比较所述本地声库数据和本地事件数据与导入虚幻引擎的声库数据和事件数据,将不存在于所述声库数据中的本地声库数据和/或与导入虚幻引擎中的事件数据不相同的本地事件数据添加至待删列表中;
第一判断模块,被配置为判断所述待删列表中所述本地声库数据和/或本地事件数据是否处于引用状态,若是,执行发送单元,若否,执行删除单元。
发送单元被配置为发送提示信息。
删除单元被配置为删除所述本地声库数据和/或本地事件数据。
所述导入模块606包括:
第一判断单元,被配置为判断待导入的第i个声库数据是否与虚幻引擎中的本地声库数据相同,其中,1≤i≤n,若是,执行第一自增单元,若否,执行第一添加单元;所述声库数据包括n个,所述事件数据包括m个;
第一自增单元,被配置为将i自增1,判断i是否大于n,若是,完成导入,若否,执行第一判断单元;
第一添加单元,被配置为将待导入的声库数据导入虚幻引擎中并添加至保存列表中;
第二判断单元,被配置为判断待导入的第j个事件数据是否与虚幻引擎中的本地事件数据相同,其中1≤j≤m,若是,执行比较单元,若否,执行第二添加单元;
比较单元,被配置为比较所述事件数据关联的声库数据与本地事件数据关联的本地声库数据;在所述事件数据关联的声库数据与本地事件数据关联的声库数据相同的情况下,执行第二自增单元;在所述事件数据关联的声库数据与本地事件数据关联的本地声库数据不相同的情况下,执行调整单元;
调整单元,被配置为调整所述本地事件数据的事件标记后添加至保存列表,执行第二自增单元;
第二自增单元,被配置为将j自增1,判断j是否大于m,若是,完成导入,若否,执行第二判断单元;
第二添加单元,被配置为将所述事件数据导入虚幻引擎中并添加至保存列表中。
所述关联模块608被进一步配置为提取所述虚幻引擎中导入的所述目标声库数据中的声库标记;
根据所述目标声库数据的声库标记与事件数据的事件标记的对应关系,查找与所述目标声库数据中的声库标记对应的事件标记作为目标事件标记;
确定所述目标事件标记对应的目标事件数据;
关联所述虚幻引擎中分别导入的目标声库数据与所述目标事件数据。
所述导入模块606还被配置为所述向虚幻引擎中分别导入的所述声库数据和事件数据保存至同一路径下。
本申请上述实施例提供的一种数据导入虚幻引擎的装置,通过将关联好的事件和声库由音频设计软件导入虚幻引擎过程中,实现声库数据与事件数据的自动关联,无需设计人员在虚幻引擎中要重新创建声库并进行命名以及手动找出并选择新建的声库与导入的事件进行关联,杜绝人工操作出现错误的情况,大幅提高了游戏的开发效率,降低游戏的制作成本。
本申请一实施例还提供一种计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机指令,所述处理器执行所述指令时实现如前所述数据导入虚幻引擎的方法的步骤。
本申请一实施例还提供一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时实现如前所述数据导入虚幻引擎的方法的步骤。
上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述数据导入虚幻引擎的方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述数据导入虚幻引擎的方法的技术方案的描述。
所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上公开的本申请优选实施例只是用于帮助阐述本申请。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本申请的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本申请。本申请仅受权利要求书及其全部范围和等效物的限制。