Files
jdt-fish-client/assets/FishSingle/script/game/utils/ResourcePreload.ts
2024-04-17 20:15:52 +08:00

65 lines
2.0 KiB
TypeScript

import { error, game } from 'cc'
import DarkLayer from '../../engine/uicomponent/DarkLayer'
import LoadingPrefab from '../../engine/uicomponent/LoadingPrefab'
import LoadingScenePrefab from '../../engine/uicomponent/LoadingScenePrefab'
import MusicPrefab from '../../engine/uicomponent/MusicPrefab'
import Progress from '../../engine/uicomponent/Progress'
import SoundPrefab from '../../engine/uicomponent/SoundPrefab'
import ResourcePrefab from '../prefab/ResourcePrefab'
import ShaderMaterialPrefab from '../prefab/ShaderMaterialPrefab'
export default class ResourcePreload {
public static instance: ResourcePreload = new ResourcePreload()
private isPreloaded: boolean = false
private totalNum: number = 6
private nowIndex: number = 0
private progress: Progress
public async preLoad(callback: Function, progress: Progress) {
if (this.isPreloaded) {
callback()
return
}
this.isPreloaded = true
this.progress = progress
if (this.progress) {
progress.updateProgress(this.nowIndex, this.totalNum)
}
await LoadingPrefab.preLoad() //1
this.finishOneItemLoad()
await DarkLayer.preLoad() //2
this.finishOneItemLoad()
await MusicPrefab.preLoad() //3
this.finishOneItemLoad()
await SoundPrefab.preLoad() //4
this.finishOneItemLoad()
await ResourcePrefab.preLoad() //5
this.finishOneItemLoad()
await ShaderMaterialPrefab.preLoad() //6
this.finishOneItemLoad() //
callback()
}
private finishOneItemLoad() {
this.nowIndex++
if (this.progress) {
this.progress.updateProgress(this.nowIndex, this.totalNum)
}
}
public restartGame() {
this.isPreloaded = false
// GameSocket.getInstance().closeSocket(false);
LoadingScenePrefab.clear()
LoadingPrefab.clear()
error('需要获取游戏里所有的AudioSource停止音乐')
//audioEngine.stopAll();
// VersionManager.instance.releaseAll();
MusicPrefab.destory()
SoundPrefab.destory()
ResourcePrefab.clear()
game.restart()
}
}