Laya:【音效BUG】在游戏失焦后再次返回游戏导致音效播放异常的问题与解决方案

PS:ios 上不支持 ogg格式音频, 全部使用MP3.或者 在只ios不使用ogg。

复现方法:

1.用Laya.SoundManager.playMusic()随意播放一个音效文件

2.在项目内开启Laya.SoundManager.autoStopMusic = true; //通过窗口失焦静音键让音频自动跟随设备静音

3.使游戏失焦:

这时背景音和音效都会暂停,Laya.SoundManager.musicMuted不知道有没有被设置为false,但是关键解决办法在这个值上面;

4.在失焦的前提下用Laya.SoundManager.playMusic()播放另一个背景音乐:

5.返回游戏使游戏再次获得焦点:

游戏音效不再出现,不管怎么放都不会生效。

解决方案:

1.保持 Laya.SoundManager.autoStopMusic = false; 为false:

此处我们自己来管理音效是否因为失焦而自动暂停,监听游戏失焦事件:Laya.stage.on(Laya.Event.BLUR,this,this.method);

在失焦的回调里设置:

Laya.SoundManager.musicMuted = true;

Laya.SoundManager.stopMusic();

将正在播放的音乐路径存为成员变量;

2.监听游戏获取焦点事件:

监听游戏获得焦点事件:Laya.stage.on(Laya.Event.FOCUS,this,this.method);

在获取焦点的事件里设置:

Laya.SoundManager.musicMuted = false;

将之前存好的正在播放的音乐的成员变量用Laya.SoundManager.playMusic(this.playingBGM)继续播放;

3.问题解决

总结:

目前还不知道是不是因为SoundManager内的aotuStopMusic导致的问题,不过可以证明的是如果项目在失焦的状态下并且aotuStopMusic已经被设置过true的前提下,在失焦状态下切换音乐路径后再回到游戏会导致播放音乐方法失效,无论你怎么stopMusic或销毁音效资源都没有用。

相关推荐
谙弆悕博士4 分钟前
【附C++源码】从零开始实现 2048 游戏
java·c++·游戏·源码·项目实战·2048
沃普天科技15 分钟前
TYPE C全功能10G数据放大延长PS8353 PS8780 PS8778 8K60HZ
驱动开发·游戏·计算机外设·电脑·ar·硬件工程·vr
阿斯加德D6 小时前
我的世界生活大冒险整合包下载高版本2026最新分享
测试工具·游戏·游戏程序·生活·材质
胖胖熊℡8 小时前
C语言打字母游戏,多版本(117-118)
游戏
初圣魔门首席弟子8 小时前
bug 2026.05.15(以前能运行的java springboot项目突然间不能运行后台数据了)
java·开发语言·bug
两水先木示8 小时前
【Unity】使用AI辅助开发Unity游戏流程
游戏
码界筑梦坊10 小时前
118-基于Python的游戏账号数据可视化分析系统
python·游戏·信息可视化·毕业设计·pandas·fastapi
2601_9503160612 小时前
塞尔达攻略+塞尔达设定集+塞尔达传说攻略
游戏·pdf·电视盒子
号码认证服务12 小时前
“二次放号”来电有旧标记?为新启用的企业号码开通认证
游戏·金融·社交电子·健康医疗·娱乐·传媒·教育电商
Desenberg12 小时前
【Claude Code】因为中途修改配置路径导致Claude Code 插件安装失败
windows·bug