版本
Wwise Unreal Integration Documentation
|
WwiseProjectDatabase 模块可用于未烘焙的工程(包括用在 Editor 中)。此模块提供基于内存的数据库视图,方便查看 Wwise 工程所生成 SoundBank 的当前状态。在 Project Database 中,可访问生成 SoundBank 时创建的 JSON 元数据文件中的所有值和信息。此视图仅仅是为了提供相关信息以供参考,其只有在更新所生成文件时才会发生变化。即便在异步加载新的数据库版本时,数据库中对结构的引用也不会影响到线程。
数据库中的信息有以下两种表示形式:
Metadata 结构的定义跟描述所生成 SoundBank 元数据的 JSON 文件完全相同。其不提供任何上下文,也没什么便捷的工具。除了极个别的情况,这些结构中的成员名称跟 JSON 文件中完全相同。
对于文件定义本身,会先通过 WwiseMetadataRootFile
对象定义文件可声明的可选根对象类型。然后,由结构暴露可能出现的不同内部对象及相应的值。
在将其加载到内存中后,这些结构会以紧凑而高效的方式清晰呈现所生成的 SoundBank。
此信息只有一个副本保存在内存中的 FWwiseRootDataStructure
和 FWwisePlatformDataStructure
JSON 文件中。
Ref 类以描述如何找到必要元数据的形式再次定义每个元数据对象。借助该类,所生成 SoundBank 中的元数据可引用各种数据结构,确保只会写入很少的重复信息。由此,可获得以 ID 方式引用 Event 的媒体列表。对于媒体的元数据(如文件位置),则可在更高层面的 SoundBank 元数据中进行定义。
比如,为了指向 Event 的 Switch Container 值,Ref 类会将共享指针副本保存到文件的根目录,并包含相应的指示以便找到 Switch Container。这些指示可以很简单。比如,“此文件”、“SoundBank 中”、“第一个 SoundBank”、“声明的第四个 Event”、“声明的第三个 Switch Container”。
具体可参见以下示例代码:
以及下述示例媒体:
从本质上来说,Ref 类提供上下文信息。藉此,不仅可以获取 Switch Container 信息,还可获取有关父类的信息(Event、SoundBank 和文件)。
有些被引用类型会托管必要的辅助信息。比如,Platform Information 将相应信息拆分到了两个辅助文件(ProjectInfo.json
和 PlatformInfo.json
)中。因此,平台 Ref 自然包含两个不同的结构。同样,其他一些被引用类型可能会保存在多个位置。Ref 类会尝试兼顾这种特殊情况。
除此之外,Ref 类还提供其他的实用功能。若传递必要的全局映射,则可获取辅助信息以及相应 Wwise 对象内包含的 Ref 类。比如,您可以请求获取特定 Event 的定义中包含的必要媒体,并将媒体作为 Ref 来返回。
Ref 信息被声明为了基础结构体和派生结构体。在 Switch Container 中,可同时请求获取 Event 的所有 Switch Container 及同级对象的值。对 Event 中包含的其他类型的信息来说,也是如此。
AnyRef 类在更高层面上让指针指向任意类型的 Ref 结构。它包含相应的类型和共享指针。在 AnyRef 层面,只能执行有限的操作。比如,检索对象的 Short ID、GUID 及名称。对于其他操作,可请求将装箱的 Ref 对象转换为与之对应的类型。它可以指向 Null 对象。所以 AnyRef 并不是引用,而是指向 Ref 对象的指针。
WwiseProjectDatabase 模块会通过其访问方法来处理查询。比如,您可以请求获取所有已知 SoundBank,也可请求获取特定的 SoundBank。数据本身保存在其 DataStructure 成员中。
在 Data 结构内,包含以下两种结构:
通常,WwiseProjectDatabase 中一次只会加载一个平台以供烘焙和打包;不过,在必要时可以加载不止一个平台。
注記: 在 Mac 上使用 Unreal Editor 处理工程时,只有 Mac 平台是必须加载的。 |
Data 结构的结构体会:
GeneratedPlatformFiles
属性中包含所有已加载文件名称的列表。JsonFiles
属性中包含各个被解析 JSON 文件的唯一副本。此外,Data 结构还允许通过函数(如 GetRef
)来进行模板化访问。