版本

menu_open
Wwise SDK 2024.1.0
集成详情——游戏对象

游戏对象是可与界面、声音和触发器等元素关联的实体。

游戏对象被定义为 AkGameObjectID(无符号的 64 位字段)。您可以自由选择 ID,范围为 0 ~ 0x‭FFFFFFFFFFFFFFDF(作为有符号整数时为 -33)。 游戏对象 ID 范围 0x‭FFFFFFFFFFFFFFE0‬(-32)到 0x‭FFFFFFFFFFFFFFFF (-1) 是保留给内部使用的。transport 游戏对象,由设计工具注册,现在使用的游戏对象 ID 是 0x‭FFFFFFFFFFFFFFFE‬(-2)。

游戏对象关联

声音引擎中触发的每个 Event 都与游戏对象关联。Event Action 只要指向特定游戏对象就会与作为 AK::SoundEngine::PostEvent() 函数的参数传递的游戏对象关联。若 Event Action 不指向游戏对象,则其会忽略所指定的游戏对象。若 Action 影响单个游戏对象,但 AK::SoundEngine::PostEvent() 中指定的游戏对象无效,则不会执行该 Action。

每个游戏对象都可以有关联的 3D 位置、针对各个 Switch Group 的 Switch、针对各个 RTPC 的 RTPC 值,以及可在特定条目(Sound SFX、Actor-Mixer、总线等)上为特定游戏对象设置的多个值(如音量)。声音引擎一直存储着这些信息,直到与这些值相关的游戏对象被注销。

注册游戏对象

在使用游戏对象前,必须先进行注册。若不再需要游戏对象,请将其注销。虽然保持注册状态并不会造成错误,但是存储这些信息(3D 位置、RTPC、Switch 等)会浪费内存。

AK::SoundEngine::RegisterGameObj() 函数存在两个版本:

以及

AK::SoundEngine::RegisterGameObj( AkGameObjectID in_gameObjectID, const char * in_pszObjName );

此函数的第二个版本用于监控目的。它会显示与在播对象关联的真实名称。在 AK_OPTIMIZED 模式下,第二个版本忽略对象名称。

您可以根据需要选用以下两个函数来注销游戏对象:

以及

AK::SoundEngine::UnregisterAllGameObj() 会全面清理当前为各个游戏对象设置的所有参数并移除所有游戏对象关联。UnregisterGameObj() 的功能与之相同,只不过针对的是单个游戏对象。在注销游戏对象后,必须重新注册才能再次使用。

备注: 重复使用游戏对象 ID 可能会导致 Wwise Profiler 中游戏对象和名称之间的关联不可靠(参见性能分析),因为 Profiler 在刷新视图时只会显示最近使用的名称。

有关游戏对象集成的示例,请参阅 游戏对象示例 章节。

参见
AKSOUNDENGINE_API AKRESULT UnregisterAllGameObj()
AkUInt64 AkGameObjectID
Game object ID
Definition: AkTypes.h:60
AKSOUNDENGINE_API AKRESULT RegisterGameObj(AkGameObjectID in_gameObjectID)
AKSOUNDENGINE_API AKRESULT UnregisterGameObj(AkGameObjectID in_gameObjectID)

此页面对您是否有帮助?

需要技术支持?

仍有疑问?或者问题?需要更多信息?欢迎联系我们,我们可以提供帮助!

查看我们的“技术支持”页面

介绍一下自己的项目。我们会竭力为您提供帮助。

来注册自己的项目,我们帮您快速入门,不带任何附加条件!

开始 Wwise 之旅