3.13 安卓声音如果没有预加载 直接在 主线程 卡顿3秒??
你们会这样吗?
进入场景前是否有调用AudioEngine::preload接口预加载游戏场景可能会播放的音效文件?
会,我的需求需要加载上百个音效。会有最多10个音效同事播放。卡顿现象非常严重。
预加载也没用。
如果音效文件过大,会使用旧的方式播放。
能否整理一个demo发给我重现一下?
没有预加载的情况,目前播放声音的时候会解码完整的音效文件为PCM Buffer,解码过程可能占用100-200ms不等吧。
3秒的确有问题,能否整理一个重现demo出来?
应该是我的问题, 我在 调用 了 预加载之后, 并没有等他加载完, 就马上去播放了。 可能这样会 造成重复预加载等问题吧。但在3.12是没有问题的。而且 记得预加载声音文件, 以前好像都是在另一个线程啊。
还有 https://github.com/cocos2d/cocos2d-x/issues/16473
这个很奇怪, 如果不开热更, 直接从包里读资源, 播放背景音乐是没问题, 开热更, 从缓存目录里读资源, 背景音乐播放不了, 报错, 但音效又可以。
嗯,预加载一定要设定第二个加载成功的回调参数,只有当所有音效都预加载完成才进入场景比较合适。
第二个问题我稍后确认一下。
一边加载一边播不行吗
这个在Android上还没有实现,后续版本中会做这个功能。
目前还是需要preload比较好,这样在播放的时候延时也会低很多。
我的意思是一边preload 等preload完成以后在播放 但是是同时进行的 我这边有几个关于AndioEngine版本的问题 在这个帖子麻烦作者大大帮看下
重加载确实会卡死 测试了一下 如果这边在预加载 a.mp3 然后那边又在播放同一个音效 a.mp3 确实会卡顿
如果重复预加载 a.mp3 那就直接卡死
重复预加载是指?
AudioEngine::preload("111.mp3", cb);
AudioEngine::preload("111.mp3", cb);
?
是的 不只是这样 比如第一次已经加载完成 然后第二次又来调用 直接卡死 那个已完成直接回调的判断处理貌似无效
贴贴代码片段看看吧,或者能有个重现demo就更好了。