Skip to content

AudioModule 播放问题 #113

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则不会有此问题。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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