搜索了下了论坛,大多说的都是用cc.loader.onProgress
但是现在1.9新版本已经都干掉cc.loader.onProgress
还有什么办法获取场景加载进度么?
const { ccclass, property } = cc._decorator
@ccclass
export default class SceneMgr extends cc.Component {
static loadScene(sceneName: string, onLoaded?) {
cc.loader.loadRes('LoadingScene', cc.Prefab, (err, res) => {
if (err) {
return
}
let node: cc.Node = cc.instantiate(res)
cc.director.getScene().addChild(node)
let comp = node.getComponent(SceneMgr)
comp.preloadScene(sceneName, onLoaded)
})
}
@property(cc.ProgressBar) progressBar: cc.ProgressBar = null
@property(cc.Node) progressEffect: cc.Node = null
private preloadScene(sceneName, onLoaded?) {
let info = cc.director._getSceneUuid(sceneName)
if (info) {
cc.director.emit(cc.Director.EVENT_BEFORE_SCENE_LOADING, sceneName)
cc.loader.load(
{ uuid: info.uuid, type: 'uuid' },
(completedCount: number, totalCount: number, item: any) => {
let step = completedCount / totalCount
this.updateProgress(step)
},
(error, asset) => {
if (error) {
cc.error(1210, sceneName, error.message)
} else {
cc.director.loadScene(sceneName)
}
if (onLoaded) {
onLoaded(error, asset)
}
}
)
} else {
cc.error('Error PreloadScene: ' + sceneName)
}
}
private updateProgress(progress: number) {
this.progressBar.progress = progress
this.progressEffect.x = -643 / 2 + 643 * progress
}
}
这个方法没有
_getSceneUuid 这个方法要貌似是私有的?
遇到同样的问题,有解决了吗?