Skip to content

AudioModule 播放问题 #113

@Fu-Brochure

Description

@Fu-Brochure

使用AudioModule时发现一个behavior不太正常,确认下是bug还是本来就不支持

复现步骤:

  1. AudioModule完成初始化
  2. 使用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

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions