You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Phaser JS如何实现音量滑块 解决切换场景滑块值归零问题

Phaser JS 音量滑块实现、默认值配置与跨场景值重置问题解决

音量滑块参考效果

匹配参考效果的滑块实现

你当前使用rexUI插件的滑块组件,只需要调整组件的样式参数、交互模式即可匹配参考图效果:

  • 调整轨道(track)、进度指示条(indicator)、拖拽按钮(thumb)的尺寸、圆角、色值,做出轨道细、拖拽按钮突出的视觉效果
  • 将输入模式从仅支持点击改为同时支持拖拽,符合常规滑块交互逻辑

滑块默认值设置方法

rexUI滑块组件原生支持value配置项,参数取值范围为0-1,分别对应滑块在最左侧(0%)、最右侧(100%)的位置,初始化滑块时直接传入该参数即可设置默认位置,常规默认音量设为0.5(即50%音量)即可。

切换场景后滑块值归零的解决方法

问题原因

你当前将音量值存储在场景内的局部变量print2中,Phaser切换场景时会默认销毁当前场景的所有局部变量、场景内对象,新场景重新初始化滑块时没有读取持久化存储的音量值,就会默认从0位置开始渲染。

修复方案

  • 使用Phaser自带的全局注册表registry存储音量值,该存储全局共享,不会随场景切换销毁
  • 滑块初始化时,优先从全局注册表读取已保存的音量值作为滑块的默认value
  • 滑块值变动时,同步更新全局注册表存储的音量值,同时直接修改全局声音对象的音量参数

修正后完整代码

// 初始化前先读取全局存储的音量,无存储值时用0.5作为默认音量
const savedVolume = this.registry.get('gameVolume') ?? 0.5;
// 初始化时直接应用已保存的音量
this.sound.volume = savedVolume;

this.rexUI.add.slider({
    x: 400,
    y: 230,
    width: 200,
    height: 30,
    orientation: 'x',
    // 滑块默认值直接取全局存储的音量
    value: savedVolume,
    // 轨道样式:细圆角深色条
    track: this.rexUI.add.roundRectangle(0, 0, 0, 6, 3, 0x3d3d3d),
    // 已选进度样式:主色圆角条
    indicator: this.rexUI.add.roundRectangle(0, 0, 0, 6, 3, 0x5865F2),
    // 拖拽按钮样式:圆形主色按钮,突出于轨道
    thumb: this.rexUI.add.roundRectangle(0, 0, 22, 22, 11, 0x5865F2),
    // 支持拖拽+点击跳转
    input: 'drag',
    easeValue: { duration: 100 },
    valuechangeCallback: function(value) {
        // 过滤异常值,确保音量在0-1合法区间
        const safeVolume = Phaser.Math.Clamp(value, 0, 1);
        // 实时更新全局音量
        this.sound.volume = safeVolume;
        // 同步更新全局存储的音量值
        this.registry.set('gameVolume', safeVolume);
        // 如需展示百分比,可转换为0-100整数使用
        const volumePercent = Math.floor(safeVolume * 100);
        console.log(volumePercent);
    },
    // 修正回调内this指向,避免拿不到sound、registry对象
    callbackScope: this
})
.layout();

补充说明:如果需要页面刷新后也保留用户设置的音量,可以将registry的读写替换为localStorage,逻辑完全一致。不要将配置值存在单个场景的局部变量中,这类变量会随场景销毁被回收。


内容的提问来源于stack exchange,提问作者Arslan Arshad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 23:39:14