同时播放同一个多个长音效崩溃

下载Cocos的引擎代码,项目里可以指定的,在设置里。让然后修改上面大佬说的 C++的文件

mac os 修改完原生代码 也是点击 编译引擎吗 还是说 自定义引擎代码

3.8.8 也崩在这里了 :confused:

2赞


我是这个崩溃

看了你的帖子,你这个崩溃应该在debug模式才有,release应该是会进判断。

使用3.8.7的版本,出现了博主反馈的问题,我这边报野指针,roratebuffer闪退,问题应该是当播放一个大音频cocos会开一个线程来单独解码,不卡主线程,在解码的过程,音频被释放了,解码线程没同步,当解码线程解码的过程访问到野指针了就闪退了

按照我下面回复的试下

引用下大佬的解决方案:https://forum.cocos.org/uploads/default/original/3X/d/d/dd0b23e3442e6f0a06661123d2145781c9ff0ea3.png

将 AudioPlayer.mm的 destroy方法中

#if CC_TARGET_PLATFORM == CC_PLATFORM_IOS 改为 #if CC_PLATFORM == CC_PLATFORM_IOS

原理: 音效缓冲区的id在析构函数中实际是被释放了,而_alSource 引用的的缓冲区id没有出队列也就是没有移除引用。而 _alSource资源会被重复使用,再次使用时有可能使用到已经被释放的缓冲区id导致崩溃。
之前提供的方法是 检测缓冲区id的有效性,也可避免崩溃。

1赞

我两处都加上了。

没懂,我没看到release有这个宏,我是3.8.8

改的是C++代码呀,不需要编译引擎,最后xcode编译打包的时候会自己编译C++代码