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或销毁音效资源都没有用。

相关推荐
天若有情6731 小时前
【澳门风云】用C开发一个模拟一个简单的扑克牌比大小的游戏
c语言·开发语言·游戏
落798.3 小时前
【植物大战僵尸杂交版】获取+存档插件
python·游戏·github
广州千汇凡网络科技有限公司11 小时前
撸包广告小游戏app开发对接广告联盟
游戏·团队开发·游戏策划
客院载论11 小时前
秋招突击——7/5——复习{}——新作{跳跃游戏II、划分字母区间、数组中的第K个大的元素(模板题,重要)、前K个高频元素}
游戏
青青草原上的梦想家12 小时前
Cocos Creator 游戏性能优化指南
游戏·面试·性能优化·typescript
WarghostWu13 小时前
游戏AI的创造思路-技术基础-遗传算法
人工智能·游戏
莳光.16 小时前
70.Bug:使用list.sort(Comparator.Comping(User::getCreateTime).reverse())空指针异常
java·bug
Angle灬魔君17 小时前
Unity【入门】场景切换和游戏退出及准备
游戏·unity·游戏引擎
我和我的顶顶年华1 天前
苹果电脑能玩赛博朋克2077吗 如何在mac上运行赛博朋克2077 crossover能玩什么游戏
游戏·macos·电脑·虚拟机·crossover软件·苹果电脑玩windows游戏·赛博朋克2077
QAZK123451 天前
苹果Mac电脑能玩什么游戏 Mac怎么运行Windows游戏
游戏·macos·电脑