-
Notifications
You must be signed in to change notification settings - Fork 458
Open
Description
使用AudioModule时发现一个behavior不太正常,确认下是bug还是本来就不支持
复现步骤:
- AudioModule完成初始化
- 使用for loop 调用
AudioModule::Play方法对同一个AudioType播放多个音频。在设置bAsync=true使用异步,且音频资源未放入 AudioClipPool
结果:
只有一个channel播放音频
原因:
AudioCategory::Play 中选择freeChannel时的判断条件 if (AudioAgents[i].AudioData?.AssetOperationHandle == null || AudioAgents[i].IsFree)。
当for loop中第一次调用AudioModule::Play, 选取了freeChannel 为0。此时,channel 0 属于初始化后第一次使用,所以 AudioAgents[i].AudioData为null,且 AudioAgents[i].IsFree 不考虑Loading情况。若AudioCategory::Play设置了异步则会导致之后for loop中的AudioModule::Play在经过if 条件时会满足,始终选取channel 0作为freeChannel并设置 LoadRequest 。最后导致多次调用AudioModule::Play最后只有一个Channel播放音频。
若设置bInPool=true且资源已放入池中或设置bAsync=false则不会有此问题。
Metadata
Metadata
Assignees
Labels
No labels