49 lines
1.2 KiB
TypeScript
49 lines
1.2 KiB
TypeScript
import { _decorator, Component, Node, Toggle } from 'cc';
|
|
import { AudioManager } from './AudioManager';
|
|
const { ccclass, property } = _decorator;
|
|
|
|
@ccclass('AudioSettingsUI')
|
|
export class AudioSettingsUI extends Component {
|
|
@property(Node)
|
|
panel: Node = null!; // 设置面板节点
|
|
|
|
@property(Toggle)
|
|
bgmToggle: Toggle = null!;
|
|
|
|
@property(Toggle)
|
|
sfxToggle: Toggle = null!;
|
|
|
|
onLoad() {
|
|
const am = AudioManager.instance;
|
|
|
|
// 初始化 Toggle 状态
|
|
this.bgmToggle.isChecked = am.bgmEnabled;
|
|
this.sfxToggle.isChecked = am.sfxEnabled;
|
|
|
|
// Toggle 监听
|
|
this.bgmToggle.node.on('toggle', this.onBgmToggleChanged, this);
|
|
this.sfxToggle.node.on('toggle', this.onSfxToggleChanged, this);
|
|
|
|
// 面板默认隐藏
|
|
this.panel.active = false;
|
|
}
|
|
|
|
/** 打开设置面板 */
|
|
openPanel() {
|
|
this.panel.active = true;
|
|
}
|
|
|
|
/** 关闭设置面板 */
|
|
closePanel() {
|
|
this.panel.active = false;
|
|
}
|
|
|
|
private onBgmToggleChanged(toggle: Toggle) {
|
|
AudioManager.instance.setBGMEnabled(toggle.isChecked);
|
|
}
|
|
|
|
private onSfxToggleChanged(toggle: Toggle) {
|
|
AudioManager.instance.setSFXEnabled(toggle.isChecked);
|
|
}
|
|
}
|