功能描述
希望能增加一个「自定义大厅音乐」的功能:替换静音客户端大厅默认的背景音乐,播放用户自己指定的本地音频文件。
理想形态:
工具页加一个开关 + 文件选择(或固定读取插件目录下某个文件夹,如sona/music/)
支持循环播放、音量调节
切换界面/进入选人阶段时的行为可以先简单处理(比如跟随原音乐的静音逻辑)
使用场景 / 动机
大厅音乐听久了容易腻;很多玩家会直接把客户端音乐关掉再开网易云,但这样切歌、音量都要跳出客户端操作。如果 Sona 能内置替换,体验会统一很多,也符合项目「客户端增强」的定位。
技术思路
大厅音乐应该是客户端 Ember 前端自己播放的本地资源( 元素或 Web Audio 节点),不走 LCU API,所以可以完全在 Pengu Loader 的浏览器环境内实现,不需要碰游戏文件
思路:用现有的 InjectorManager 机制监听音频元素挂载 → 将原元素 muted/pause → 自己 new Audio() 播放插件目录下的音频文件(相对路径引用,和 assets/ 里的图片同理)
需要注意 DOM 自愈:客户端刷新 DOM 后原音频元素会重建,需要重新静音,这正好是 InjectorManager 已经解决的问题
补充
我自己还没用DevTools看过大厅的音频元素结构,如果需要我可以补充更多排查信息。
功能描述
希望能增加一个「自定义大厅音乐」的功能:替换静音客户端大厅默认的背景音乐,播放用户自己指定的本地音频文件。
理想形态:
工具页加一个开关 + 文件选择(或固定读取插件目录下某个文件夹,如sona/music/)
支持循环播放、音量调节
切换界面/进入选人阶段时的行为可以先简单处理(比如跟随原音乐的静音逻辑)
使用场景 / 动机
大厅音乐听久了容易腻;很多玩家会直接把客户端音乐关掉再开网易云,但这样切歌、音量都要跳出客户端操作。如果 Sona 能内置替换,体验会统一很多,也符合项目「客户端增强」的定位。
技术思路
大厅音乐应该是客户端 Ember 前端自己播放的本地资源( 元素或 Web Audio 节点),不走 LCU API,所以可以完全在 Pengu Loader 的浏览器环境内实现,不需要碰游戏文件
思路:用现有的 InjectorManager 机制监听音频元素挂载 → 将原元素 muted/pause → 自己 new Audio() 播放插件目录下的音频文件(相对路径引用,和 assets/ 里的图片同理)
需要注意 DOM 自愈:客户端刷新 DOM 后原音频元素会重建,需要重新静音,这正好是 InjectorManager 已经解决的问题
补充
我自己还没用DevTools看过大厅的音频元素结构,如果需要我可以补充更多排查信息。