65 lines
1.9 KiB
TypeScript
65 lines
1.9 KiB
TypeScript
import { _decorator, Component, ProgressBar, Label, assetManager, director, SpriteFrame, Prefab } from 'cc';
|
|
import { ResourceManager } from './ResourceManager';
|
|
const { ccclass, property } = _decorator;
|
|
|
|
@ccclass('Loading')
|
|
export class Loading extends Component {
|
|
@property(ProgressBar)
|
|
progressBar: ProgressBar | null = null;
|
|
|
|
@property(Label)
|
|
progressLabel: Label | null = null;
|
|
|
|
@property
|
|
nextScene: string = "StartScene";
|
|
|
|
onLoad() {
|
|
// if (typeof wx !== 'undefined' && wx.hideLoading) {
|
|
// wx.hideLoading();
|
|
// }
|
|
this.startLoading();
|
|
}
|
|
|
|
startLoading() {
|
|
assetManager.loadBundle("resources", (err, bundle) => {
|
|
if (err) {
|
|
console.error("加载 resources 失败:", err);
|
|
return;
|
|
}
|
|
console.log(11111111111,2222)
|
|
|
|
// 加载整个 resources 下的内容
|
|
bundle.loadDir(".", (finished, total, item) => {
|
|
let ratio = finished / total;
|
|
console.log(11111111111,ratio)
|
|
|
|
this.updateProgress(ratio);
|
|
}, (err, assets) => {
|
|
if (err) {
|
|
console.error("资源加载失败:", err);
|
|
return;
|
|
}
|
|
|
|
// 缓存资源
|
|
assets.forEach(asset => {
|
|
ResourceManager.instance.set(asset.name, asset);
|
|
asset.addRef(); // 增加引用计数,避免被自动释放
|
|
});
|
|
|
|
// 进入主场景
|
|
director.loadScene(this.nextScene);
|
|
});
|
|
});
|
|
}
|
|
|
|
updateProgress(ratio: number) {
|
|
console.log(111111, ratio)
|
|
if (this.progressBar) {
|
|
this.progressBar.progress = ratio;
|
|
}
|
|
if (this.progressLabel) {
|
|
this.progressLabel.string = `${Math.floor(ratio * 100)}%`;
|
|
}
|
|
}
|
|
}
|