目录

查询 Wwise 工程

Wwise Authoring API 提供了综合查询系统,可用于获取 Wwise 工程最关键方面的信息。更具体地说,它用于获取工程中任何对象的信息。

该查询系统内置于 ak.wwise.core.object.get 功能里。请参阅它的参考文档了解更多详情。

查询的结构包括两个部分:

  • from: 指定查询的起点。这是获取数据的来源。
  • transform: 指定应用于对象的一系列转换。可以按次序添加转换。

此外,查询可以用选项指定:

  • return: 指定从对象返回的内容。如果没有指定,则默认值为 ['id', 'name']。
  • platform: 指定使用查询的平台。如果没有指定,则默认为当前平台

from

from 语句为查询开始提供了几个起点:

  • id: 指定: 指定一列对象 ID(GUID)。当您已经有对象 ID 时,可用于查找该对象。
  • name: 按照 type:name 形式指定一组由对象类型限定的对象名称。仅支持采用全局唯一名称的对象类型。请参阅 Wwise Objects Reference 了解可用类型。
  • search: 指定在 Wwise 对象和备注中要搜索的文本。这与 Wwise 中的搜索功能所用的搜索引擎是一样的。
  • path: 指定要查找的一系列路径。路径必须是绝对路径,并且必须以类别名称开头,就相当于物理文件夹名称。例如: \Actor-Mixer Hierarchy\Default Work Unit\MySound。
  • ofType: 指定一系列 Wwise 对象类型。用于获取某个对象类型的所有对象。例:获取所有 Game Parameters。请参阅 Wwise Objects Reference 了解可用类型。

transform

transform 语句提供了几个转换功能,可以用于转换已选择的对象。第一个转换是应用于 from 语句所选择的对象的。另一个 transformation 应用于之前转换的结果。

可以按次序添加多个转换。

  • select parent: 为每个对象选择父级对象。
  • select children: 为每个对象选择子级对象列表。
  • select descendants: 为每个对象递归选择所有子级对象。
  • select ancestors: 为每个对象递归选择父级对象。
  • select referencesTo: 为每个对象选择所有引用该对象的对象。
  • where: 用于过滤之前迭代器的结果。可能的标准是:
    • name:contains: 对对象名称中文本的搜索,不区分大小写。
    • name:matches: 对对象名称的正则表达式搜索,不区分大小写。
    • type:isIn: 筛选之前迭代器的结果,仅保留特定类型的对象。如需查看对象类型列表,请参阅 Wwise Objects Reference
    • category:isIn: 筛选之前迭代器的结果,仅保留特定类别的对象。
  • distinct: 筛选之前迭代器的结果,仅保留独特的对象。

return(在选项中)

return 语句会在所有转换结尾执行一次。如果没有指定转换,会直接从 from 语句执行。 return 语句会指定返回 Wwise 对象的何种要素。可以返回任意数量的要素。

当带有‘@’前缀时,返回表达式可包含属性和引用。比如,它可能包含‘@Volume’或‘@OutputBus’。当有‘@@’前缀时,返回会使用"Override"("不沿用"属性)的来源,它由层级中‘Override Parent’(不沿用父级)的具体数值决定。

在表达式解析为有效引用时,可进一步查询被引用对象的属性。比如,若 Sound 对象的 '@UserAuxSend0' 引用了现有 Auxiliary Bus,则可通过附加点号 ('.') 并后缀属性描述符来查询此 Auxiliary Bus 的属性。因此,如需查询被引用 Auxiliary Bus 的 Attenuation,直接使用 '@UserAuxSend0.@Attenuation' 即可。使用 '@@' 前缀来获取 Override 来源的规则在此同样适用。

有些对象包含带有特定功能(如随机化)的属性。为了检索与这些功能相关的值,可通过类似函数的访问器来查询与属性绑定的特殊对象。比如,随机化器功能由绑定到对象特定属性的 Modifier 对象描述。此对象可作为 'randomizer("PropertyName")' 来查询,其中 PropertyName 为属性(如 'Volume')的名称。 在访问器提供有效引用时,可按照前文所述方式进一步查询返回的对象。比如,可按照以下方式获取 Volume 随机化器的 'Max' 属性:'randomizer("Volume").@Max'。

可用的访问器包括:

  • randomizer

如果返回表达式中的一个条目不兼容或不在返回对象中,则结果将不含该条目。

其他选项

ak.wwise.core.object.get 函数及其他函数允许使用选项对象来定义:

  • return 语句(参见上文)
  • platform:平台的 ID (guid) 或名称。
  • language:语言的 ID (guid) 或名称。

有些访问器会区分选项。比如,在检索属性或引用值时,可通过指定平台来获取取消链接的值。若未指定平台,则使用当前平台。 另外,还可通过指定语言来检索针对语言的信息,如 Sound SFX(音效)对象的音频源数据。 若未指定语言,则使用当前语言。

示例

请参照 to 工程代码 了解初始化。

如需查看更多示例,请参阅 ak.wwise.core.object.get

返回一列对象的 ID、名称和音量:

var query = {
    from: { id: [
        '{A076AA65-B71A-45BB-8841-5A20C52CE727}',
        '{2028C899-8300-4667-ADD0-ED10467BD91E}',
        '{24979032-B170-43E3-A2E4-469E0193E2C3}'
    ] }
};
var options = {
    return: ['id', 'name', '@Volume']
};

session.call('ak.wwise.core.object.get', [], query, options).then(
    function (res) {
        // 打印名称和音量
        var objects = res.kwargs.return;
        for(let i = 0; i < objects.length;++i ){
            console.log(`${objects[i].name}: ${objects[i]['@Volume']}`);
        }
    },
    function (error) {
        console.log(`error: ${error}`);
    }        
);

返回 Actor-Mixer Hierarchy 中以‘My’开头所有对象的 ID 和名称,并使用以下的正则表达式返回:

var query = {
    from:{path:['\\Actor-Mixer Hierarchy']},
    transform:[
        {select:['descendants']},
        {where:['name:matches','^My']}
    ]
};

var options = {
    return: ['id', 'name']
};

session.call('ak.wwise.core.object.get', [], query, options).then(
    function (res) {
        // 打印名称
        var objects = res.kwargs.return;
        for(let i = 0; i < objects.length;++i ){
            console.log(`${objects[i].name}`);
        }
    },
    function (error) {
        console.log(`error: ${error}`);
    }        
);