import { _decorator, Component, Node, Label, sys } from 'cc'; const { ccclass, property } = _decorator; @ccclass('ButtonBadge') export class ButtonBadge extends Component { @property(Node) hint_badge: Node | null = null; @property(Label) hint_countLabel: Label | null = null; @property(Node) hint_adIcon: Node | null = null; @property(Node) shuffle_badge: Node | null = null; @property(Label) shuffle_countLabel: Label | null = null; @property(Node) shuffle_adIcon: Node | null = null; @property(Node) magic_badge: Node | null = null; @property(Label) magic_countLabel: Label | null = null; @property(Node) magic_adIcon: Node | null = null; private _hint_count: number = 0; private _hint_storageKey: string = "hint_button_usage_count"; private _shuffle_count: number = 0; private _shuffle_storageKey: string = "shuffle_button_usage_count"; private _magic_count: number = 0; private _magic_storageKey: string = "magic_button_usage_count"; onLoad() { // 从本地缓存读取 const hintSaved = sys.localStorage.getItem(this._hint_storageKey); const shuffleSaved = sys.localStorage.getItem(this._shuffle_storageKey); const magicSaved = sys.localStorage.getItem(this._magic_storageKey); this._hint_count = hintSaved ? parseInt(hintSaved) : 3; // 默认初始 3 次 this._shuffle_count = shuffleSaved ? parseInt(shuffleSaved) : 3; // 默认初始 3 次 this._magic_count = magicSaved ? parseInt(magicSaved) : 3; // 默认初始 3 次 console.log('load', this._shuffle_count, this._magic_count) this.updateHintView(); this.updateShuffleView(); this.updateMagicView(); } private updateHintView() { if (!this.hint_badge) return; if (this._hint_count > 0) { this.hint_badge.active = true; if (this.hint_countLabel) { this.hint_countLabel.string = this._hint_count.toString(); this.hint_countLabel.node.active = true; } if (this.hint_adIcon) this.hint_adIcon.active = false; } else { this.hint_badge.active = true; if (this.hint_countLabel) this.hint_countLabel.node.active = false; if (this.hint_adIcon) this.hint_adIcon.active = true; } } private updateShuffleView() { if (!this.shuffle_badge) return; if (this._shuffle_count > 0) { this.shuffle_badge.active = true; if (this.shuffle_countLabel) { this.shuffle_countLabel.string = this._shuffle_count.toString(); this.shuffle_countLabel.node.active = true; } if (this.shuffle_adIcon) this.shuffle_adIcon.active = false; } else { this.shuffle_badge.active = true; if (this.shuffle_countLabel) this.shuffle_countLabel.node.active = false; if (this.shuffle_adIcon) this.shuffle_adIcon.active = true; } } private updateMagicView() { if (!this.magic_badge) return; if (this._magic_count > 0) { this.magic_badge.active = true; if (this.magic_countLabel) { this.magic_countLabel.string = this._magic_count.toString(); this.magic_countLabel.node.active = true; } if (this.magic_adIcon) this.magic_adIcon.active = false; } else { this.magic_badge.active = true; if (this.magic_countLabel) this.magic_countLabel.node.active = false; if (this.magic_adIcon) this.magic_adIcon.active = true; } } private saveHint() { sys.localStorage.setItem(this._hint_storageKey, this._hint_count.toString()); } private saveShuffle() { sys.localStorage.setItem(this._shuffle_storageKey, this._shuffle_count.toString()); } private saveMagic() { sys.localStorage.setItem(this._magic_storageKey, this._magic_count.toString()); } public useHintOnce(): boolean { if (this._hint_count > 0) { this._hint_count--; this.saveHint(); this.updateHintView(); return true; // 成功使用 } else { // this.showAdAndReward(); return false; // 没次数,去看广告 } } public useShuffleOnce(): boolean { if (this._shuffle_count > 0) { this._shuffle_count--; this.saveShuffle(); this.updateShuffleView(); return true; // 成功使用 } else { // this.showAdAndReward(); return false; // 没次数,去看广告 } } public useMagicOnce(): boolean { if (this._magic_count > 0) { this._magic_count--; this.saveMagic(); this.updateMagicView(); return true; // 成功使用 } else { // this.showAdAndReward(); return false; // 没次数,去看广告 } } public getHintCount() { return this._hint_count; } public getShuffleCount() { return this._shuffle_count; } public getMagicCount() { return this._magic_count; } public showAdAndReward(type) { // ⚠️ 这里接入广告 SDK console.log("显示广告..."); // 假设广告结束回调 if(type === 'hint') this.onAdHintComplete(); if(type === 'shuffle') this.onAdShuffleComplete(); if(type === 'magic') this.onAdMagicComplete(); } private onAdHintComplete() { this._hint_count += 3; this.saveHint(); this.updateHintView(); } private onAdShuffleComplete() { this._shuffle_count += 3; this.saveShuffle(); this.updateShuffleView(); } private onAdMagicComplete() { this._magic_count += 3; this.saveMagic(); this.updateMagicView(); } }