feat: 支持音频管线

This commit is contained in:
richarjiang
2026-05-19 21:40:45 +08:00
parent 165fef318f
commit 43afe6085d
13 changed files with 151 additions and 24 deletions

View File

@@ -1,4 +1,4 @@
import { _decorator, Node, Button, Sprite, Label, Toggle, ScrollView, EditBox, instantiate, UITransform, Vec2, EventTouch, EffectAsset, AudioClip, AudioSource } from 'cc';
import { _decorator, Node, Button, Sprite, Label, Toggle, ScrollView, EditBox, instantiate, UITransform, Vec2, EventTouch, EffectAsset } from 'cc';
import { BaseView } from 'db://assets/scripts/core/BaseView';
import { ViewManager } from 'db://assets/scripts/core/ViewManager';
import { CompletedLevelsManager } from 'db://assets/scripts/utils/CompletedLevelsManager';
@@ -11,6 +11,7 @@ import { API_ENDPOINTS, API_TIMEOUT } from 'db://assets/scripts/config/ApiConfig
import { HttpUtil } from 'db://assets/scripts/utils/HttpUtil';
import { ApiEnvelope, CompletedLevel } from 'db://assets/scripts/types/ApiTypes';
import { applyRoundedCorner } from 'db://assets/scripts/utils/roundedMaterial.utils';
import { AudioManager } from 'db://assets/scripts/utils/AudioManager';
const { ccclass, property } = _decorator;
/**
@@ -69,9 +70,6 @@ export class PageWriteLevels extends BaseView {
@property({ tooltip: '关卡封面圆角半径比例相对于短边0-0.5' })
coverCornerRadius: number = 0.1;
@property({ type: AudioClip, tooltip: '关卡项选中/取消选中音效' })
itemToggleAudio: AudioClip | null = null;
private _selectedIndices: Set<number> = new Set();
private _levels: CompletedLevel[] = [];
private _levelCount: number = 0;
@@ -429,7 +427,7 @@ export class PageWriteLevels extends BaseView {
this._selectedIndices.delete(index);
}
this._playSound(this.itemToggleAudio);
AudioManager.instance.playButtonClick();
console.log('[PageWriteLevels] item切换选中:', index, selected, '当前已选:', this._selectedIndices.size);
@@ -492,11 +490,13 @@ export class PageWriteLevels extends BaseView {
}
private _onBackClick(): void {
AudioManager.instance.playButtonClick();
console.log('[PageWriteLevels] 返回按钮点击');
ViewManager.instance.back();
}
private _onDataClick(): void {
AudioManager.instance.playButtonClick();
ViewManager.instance.open('PagePKData');
}
@@ -513,16 +513,8 @@ export class PageWriteLevels extends BaseView {
return true;
}
private _playSound(clip: AudioClip | null): void {
if (!clip) {
return;
}
const audioSource = this.node.getComponent(AudioSource) ?? this.node.addComponent(AudioSource);
audioSource?.playOneShot(clip);
}
private _onPreviewClick(): void {
AudioManager.instance.playButtonClick();
if (!this._validateSelection()) return;
const shareTitle = this.shareTitleEditBox?.getComponent(EditBox)?.string?.trim() || '';
ViewManager.instance.open('PagePreviewLevels', {
@@ -534,6 +526,7 @@ export class PageWriteLevels extends BaseView {
}
private async _onCompleteClick(): Promise<void> {
AudioManager.instance.playButtonClick();
if (!this._validateSelection()) return;
const shareTitle = this.shareTitleEditBox?.getComponent(EditBox)?.string?.trim() || '';