Appearance
unison.wwise — 音频引擎
Wwise 音频中间件的 Python 封装,提供完整的音频控制功能。
使用方式
python
from unison import wwise初始化
python
# 初始化 Wwise
wwise.initialize(base_path="SoundBanks/", vfs_paths=["SoundBanks/"])
# 加载音频库
wwise.load_bank("Init.bnk")
wwise.load_bank("UI.bnk")
wwise.load_bank("Music.bnk")
# 注册游戏对象
wwise.register_game_object(1, "Player")
wwise.register_game_object(100, "Listener")生命周期
| 函数 | 说明 |
|---|---|
initialize(base_path, vfs_paths) | 初始化 Wwise 引擎 |
shutdown() | 关闭 Wwise |
is_initialized() | 是否已初始化 |
render_audio() | 每帧渲染音频 |
Bank 管理
python
wwise.load_bank("UI.bnk")
wwise.unload_bank("UI.bnk")
wwise.unload_all_banks()| 函数 | 说明 |
|---|---|
load_bank(name) | 加载音频库 |
unload_bank(name) | 卸载音频库 |
unload_all_banks() | 卸载全部 |
游戏对象
python
wwise.register_game_object(id, name)
wwise.unregister_game_object(id)
wwise.unregister_all_game_objects()事件
python
# 触发事件
playing_id = wwise.post_event("Play_Footstep", game_object_id=1)
wwise.post_event("Play_Music", 1)
wwise.post_event("Play_UI_Click", 1)
# 停止事件
wwise.stop_event("Play_Music", 1, transition_time_ms=500)
wwise.stop_all() # 停止所有事件
wwise.stop_playing_id(playing_id, transition_time_ms=200)| 函数 | 说明 |
|---|---|
post_event(event_name, game_object_id) | 触发事件,返回 playing_id |
stop_event(event_name, game_object_id, transition_time_ms) | 停止指定事件 |
stop_all(game_object_id) | 停止所有事件 |
stop_playing_id(playing_id, transition_time_ms) | 通过 ID 停止 |
RTPC (实时参数控制)
python
wwise.set_rtpc_value("Volume_Master", 0.8, game_object_id=1)
value = wwise.get_rtpc_value("Volume_Master", 1)| 函数 | 说明 |
|---|---|
set_rtpc_value(rtpc_name, value, game_object_id) | 设置 RTPC 值 |
get_rtpc_value(rtpc_name, game_object_id) | 获取 RTPC 值 |
Switch / State
python
# Switch(按对象)
wwise.set_switch("Material", "Concrete", game_object_id=1)
wwise.set_switch("Material", "Metal", game_object_id=1)
# State(全局)
wwise.set_state("RoomSize", "Large")
wwise.set_state("RoomSize", "Small")| 函数 | 说明 |
|---|---|
set_switch(group, state, game_object_id) | 设置对象开关 |
set_state(group, state) | 设置全局状态 |
3D 定位
python
# 设置发射源位置
wwise.set_position(
game_object_id=1,
x=10.0, y=0.0, z=5.0,
orient_x=0.0, orient_y=0.0, orient_z=-1.0
)
# 设置监听者位置(通常为摄像机)
wwise.set_listener_position(
x=0.0, y=1.5, z=0.0,
front_x=0.0, front_y=0.0, front_z=-1.0,
top_x=0.0, top_y=1.0, top_z=0.0
)
# 管理监听者关系
wwise.set_listeners(emitter_id=1, listener_ids=[100])
wwise.add_listener(emitter_id=1, listener_id=101)
wwise.remove_listener(emitter_id=1, listener_id=101)| 函数 | 说明 |
|---|---|
set_position(id, x, y, z, orient_x, orient_y, orient_z) | 设置对象 3D 位置 |
set_listener_position(x, y, z, front_x, front_y, front_z, top_x, top_y, top_z) | 设置监听者位置 |
set_listeners(emitter_id, listener_ids) | 设置发射者的监听者列表 |
add_listener(emitter_id, listener_id) | 添加监听者 |
remove_listener(emitter_id, listener_id) | 移除监听者 |
音量与遮挡
python
wwise.set_volume(0.8) # 全局音量 0~1
volume = wwise.get_volume()
# 输出总线音量
wwise.set_game_object_output_bus_volume(emitter_id=1, listener_id=100, volume=0.5)
# 阻挡和遮挡 (0~1)
wwise.set_obstruction_and_occlusion(emitter_id=1, listener_id=100, obstruction=0.3, occlusion=0.7)路径管理
python
wwise.set_base_path("SoundBanks/")
wwise.add_base_path("DLC/SoundBanks/")
wwise.add_vfs_search_path("SoundBanks/")