美文网首页Cocos2d-X与游戏开发Cocos Creator
Cocos Creator游戏开发用户体验优化:如何获取并展示加

Cocos Creator游戏开发用户体验优化:如何获取并展示加

作者: Thomas游戏圈 | 来源:发表于2020-08-25 15:12 被阅读0次

一、 问题背景

有时候,当我们场景上挂载的资源过多时,我们使用cc.director.loadScene切换场景时会等一段时间才会切换过去,这对游戏的体验是相当不好的。所以我们可以使用cc.director.preloadScene来进行预加载,如:https://space.bilibili.com/351545447

cc.director.preloadScene("sceneName", function () {

    cc.director.loadScene("sceneName");

});

同时搭载一个加载进度条来实现显示加载进度,优化游戏体验:

二、 如何获取加载时的进度?

  1. Cocos Creator 2.0版本之前

在Cocos creator 2.0版本之前,我们可以使用下面这样的方法:

cc.loader.onProgress = function (completedCount, totalCount, item){

      //先开监听

    this.loading.progress = completedCount/totalCount;

    this.loadLabel.string = Math.floor(completedCount/totalCount * 100) + "%";

}.bind(this);

cc.director.preloadScene("sceneName", function () {

    cc.log("加载成功");

});

备注:loading就是你在脚本中绑定的进度条组件。

  1. Cocos Creator 2.0版本之后

Cocos creator升级到2.0版本后,onProgress貌似就无法使用了,所以上述那个方法无法获取到加载进度,但是在cc.director.preloadScene这个函数中新增了一个参数:

所以我们可以通过这个参数来获取加载的进度:

cc.director.preloadScene("sceneName", this.onProgress.bind(this), function(){    

    cc.log("加载成功");

})

**onProgress** :function(completedCount, totalCount, item){

    this.loading.progress = completedCount/totalCount;

    this.loadLabel.string = Math.floor(completedCount/totalCount * 100) + "%";

}

三、 源码角度分析本质

其实无论是预加载场景还是加载资源,本质调用的还是cc.loader.load这个api,看底层代码可以知道,源码部分截图如下:

  1. 预加载场景
  1. 加载资源

而cc.loader.load的内部实现的参数中就是带有这个回调函数的,如下图:

四、 结论

所以我们还可以这样写来获取加载场景的进度:

var info = cc.director._getSceneUuid(this.sceneName);

var self = this;

if (info) {

    cc.loader.load({ uuid: info.uuid, type: 'uuid' }, function(completedCount, totalCount, item){

    cc.log("已完成Items:" + completedCount);

    cc.log("全部Items:" + totalCount);

    cc.log("当前Item:" + item.url);

    self._loadingNextStep = parseInt(completedCount / totalCount * 100);

    cc.log("加载进度:" + self._loadingNextStep);

    }, function(error, asset){

                if (error) {

                    cc.errorID(1210, this.sceneName, error.message);

                } else {

                    cc.log("加载完成");

}

     }

 });

}

相关文章

网友评论

    本文标题:Cocos Creator游戏开发用户体验优化:如何获取并展示加

    本文链接:https://www.haomeiwen.com/subject/mbhzjktx.html