在iOS启动游戏后一段时间,开始出现这样的报错(启动了Enable API Error Logging):
[FMOD] ChannelControl::isPlaying(0x171e366af:false) returned ERR_CHANNEL_STOLEN for CHANNELCONTROL (0xE40045).
[FMOD] ChannelControl::stop() returned ERR_CHANNEL_STOLEN for CHANNELCONTROL (0xE40045).
这些日志断断续续出现,但这时游戏还没有明显的问题。
但游戏继续游玩一段时间后,会出现一个明显的卡顿,然后所有音频都会停止。之后似乎所有音频都会触发上述的报错,日志里全是这类报错。看起来像是Channel用完了。配置里的Virtual Channel Count是128,Real Channel Count是32。
这个问题出现后,如果将游戏切到后台,声音会突然恢复播放。之后再切回前台就不会再有上述报错了。
顺便一说,声音停止后不久会出现这样的Warning:
[FMOD] EventInstance::update : Event {8fa27686-8af5-47f3-87a5-6ddc49a86dfa} waited 52 milliseconds for sample data to load. Preload sample data to avoid this delay.
这种Warning只会出现一两条,似乎是由声音停止后最先尝试播放的事件发出的警告,之后便不再出现。但前面提到的两种报错会不停出现,刷出一大堆,直到切后台使其恢复或者关闭游戏。
这个问题是我们将游戏从Unity2020升级到Unity2022后发现的,使用的FMOD版本是2.02.04。同一个项目打包的安卓项目没有出现这种情况,只有iOS出现了。