import { _decorator, Component, Sprite } from 'cc'; import { I18nManager } from '../manager/I18nManager'; const { ccclass, property } = _decorator; @ccclass('LocalizedSprite') export class LocalizedSprite extends Component { private sprite: Sprite | null = null; @property({ tooltip: '资源名字' }) private spriteName: string = ''; onLoad() { this.sprite = this.getComponent(Sprite); this.updateSprite(); } public updateSprite() { if (!this.sprite || !this.spriteName) return; if (!I18nManager.instance.ready) return; let cacheKey = `${I18nManager.instance.currentLanguage}_${this.spriteName}`; let cachedFrame = I18nManager.instance.spriteFrameCache.get(cacheKey); if (cachedFrame) { this.sprite.spriteFrame = cachedFrame; } } updateSpriteForPreload(language: string) { this.sprite = this.getComponent(Sprite); let cacheKey = `${language}_${this.spriteName}`; let cachedFrame = I18nManager.instance.spriteFrameCache.get(cacheKey); this.sprite.spriteFrame = cachedFrame; } }