Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
月儿圆
minigame-unity-webgl-transform
提交
72ac7772
M
minigame-unity-webgl-transform
项目概览
月儿圆
/
minigame-unity-webgl-transform
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
M
minigame-unity-webgl-transform
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
72ac7772
编写于
9月 17, 2022
作者:
ocean2o11
提交者:
GitHub
9月 17, 2022
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Update AudioOptimization.md
修改音频路径说明
上级
51d67dfa
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
17 addition
and
6 deletion
+17
-6
Design/AudioOptimization.md
Design/AudioOptimization.md
+17
-6
未找到文件。
Design/AudioOptimization.md
浏览文件 @
72ac7772
# 音频优化
由于导出成WEBGL的游戏,音频处理上存在一定的性能损耗,建议直接调用SDK中的音频API直接控制播放,能达到不错效果。使用微信音频API后音频无需再监听onAudioInterruptionBegin,onAudioInterruptionEnd事件,插件会自动处理。
# 为何需要音频优化
1.
Unity2021版本之前的音频不支持压缩音频,在引擎CPU侧解压会消耗大量内存
2.
iOS高性能模式下,Unity WebGL默认使用WebAudio会消耗游戏进程大量内存(特别是时长较大的音频)
我们建议将Unity Audio替换成SDK中的音频API控制播放。如果工作量太大,也建议替换长音频(如BGM)。
## API使用
###
长音频的
使用
代码如下,可参考
[
微信开发者文档
](
https://developers.weixin.qq.com/minigame/dev/api/media/audio/InnerAudioContext.html
)
,其中src为音频地址,可填本地路径如
Assets/xx.wav,运行时会自动和配置的音频地址前缀做拼接得到最终线上地址。注意长音频使用时,音频对象是不还被缓存的,需要直接缓存音频对象(就是WX.CreateInnerAudioContext的对象需要自己缓存),不然每次都会重新加载
。
###
接口
使用
代码如下,可参考
[
微信开发者文档
](
https://developers.weixin.qq.com/minigame/dev/api/media/audio/InnerAudioContext.html
)
,其中src为音频地址,可填本地路径如
xx.wav,运行时会自动和配置的音频地址前缀(默认为DATA_CDN/Assets)做拼接得到最终线上地址
。
*
使用方法一:
为了减少用户等待时间和避免音频延迟,
...
...
@@ -29,7 +34,8 @@
*
使用方法二:
如果想直接将用到的音频先完全下载避免延迟,用到的时候直接使用,则可以如下调用:
```
string[] a = { "Assets/Audio/0.wav", "Assets/Audio/1.wav" }; //需要预下载列表
//需要预下载列表
string[] a = { "Audio/0.wav", "Audio/1.wav" };
WX.PreDownloadAudios(a, (int res) =>
{
//下载完成后回调
...
...
@@ -54,10 +60,15 @@
`注意`
WX.CreateInnerAudioContext 返回的音频对象是可以复用的,就是可以多次调用Play方法播放,但是如果需要多个音频同时播放就要创建多个音频对象了。
## 导出设置
勾选使用微信音频API,并填上"游戏资源CDN",比如填写的地址为https://wx.qq.com/data/ ,而API的src地址为 A
ssets/Audio/Chill_1.wav,则最终会请求 https://wx.qq.com/data/Assets/Audio/Chill_1.wav
勾选使用微信音频API,并填上"游戏资源CDN",比如填写的地址为https://wx.qq.com/data/ ,而API的src地址为 A
udio/Chill_1.wav,则最终请求路径会自动拼接前缀DATA_CDN/Assets(其中Assets路径可通过MiniGameConfig.asset更改), 即https://wx.qq.com/data/Assets/Audio/Chill_1.wav。
## 将音频文件上传CDN
游戏内的音频会被导出到导出目录的Assets文件夹下,需要将其上传至您的CDN,保证用户能访问到
![
avatar
](
../image/assets2.png
)
## 注意事项
-
使用微信音频API后音频无需再监听onAudioInterruptionBegin,onAudioInterruptionEnd事件,插件会自动处理。
-
音频未使用needDownload=true或PreDownloadAudios的情况下,音频文件是不还被缓存的,多次创建并播放同样音频会造成多次下载。需要游戏逻辑自己负责缓存音频对象(就是WX.CreateInnerAudioContext的对象需要自己缓存)。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录