Cc.loader.loadRes 资源加载能否同步加载?

cc.loader.loadRes 资源加载能否同步加载?

不可以,Web 端的加载因为必须请求服务器所以都是异步的

可是咱們做的是Moblie 不是Web啊 不能針對平台做客製化嗎??

坐等某个版本支持yield就好了:grin:

Mobile native 中为了体验的一致性,也做成了异步接口,对于加载本地文件实际上的确是同步的,不过我们会尽量抹平本地文件和异步文件的差异。如果 native 使用同步接口,web 使用异步接口,对于跨平台的代码组织是非常不友好的,我们维护起来也更复杂,更容易产生 bug。

我想问的是,异步接口对于你们哪些方面造成了困扰?

手动加载资源然后使用资源,有嵌套的话,异步写起来代码很难看

明显应该用异步的赛,,

大多数人应该是cocos原来的使用习惯,都是使用同步加载的,思维也都是同步加载,
突然用异步,一是不习惯,二是思维转变不过来,甚至都没用过异步,都不知道怎么处理
加上异步不能实时展示出来,还要配合各种回调,写起来有点费劲 。。。
纯属我个人看法。。。
我也希望加入同步接口

同步性能影响大。

加一个loadResSync 就行了嘛。

请问原生加载图片是调用引擎的异步接口吗?addImageSync

用 ts 可以等待异步,和同步效果一样

杀千刀的异步加载,卡我两天了。封装了一个animation类,return 封装好的各类动画,就因为异步的事 各种回调恶魔一样的体验!!!!

真是极为傻X的设计,用creator到现在还没觉得怎么样,也不想吐槽,就这个设计实在太傻了

个人认为这点对新人真的不友好。引擎组貌似总觉得这点完全没问题。。。其实稍微给点提示就行了啊。。
跟楼上说的一样,可以用ts解决,不熟悉ts也没关系,把需要用到同步的js脚本文件后缀改成ts,然后里边就可以使用es7的语法了,async await来搞同步异步。

不知道为什么引擎组从来不认为资源不能同步加载没有问题?node.js也会一起提供同步的方法啊,目前还是做native开发的居多,异步加载除了写着很麻烦没发现有什么好处。为什么资源加载就不能提供同步方法呢?在native上本身资源都是本地的。

本地就真的不要时间了 ?或许吧 至少异步加载没问题
只是看怎么 让代码更方便
写一个 比较公用的类 或者 方法啥的可以考虑

可以参考node代码,异步方法都会同时提供一个同步方法。

异步加载的确写起来不太友好,比如我写一个逻辑,本来同步的话,先判断这个预制资源是否加载了,没加载的话,我从资源里加载一下,有的话就直接赋值数据, 问题来了,如果是异步的,我一个方法写起来就得 if else 里写两段相同的代码,不好看,就得再搞个方法,等异步加载之后调用. 大家可能都是把预制资源关联到节点上,不需要这么搞,但是如果我懒加载预制资源,把预制资源放到 resorce里的话 就经常会遇到这个问题. 再者就是异步加载需要上层自己加逻辑,不然异步加载可能会逻辑问题,造成一些不想看到的bug

1赞

我有这样一个问题 webSocket 建立连接 拿到数据需要驱使view去更新 这个万恶的异步 让我无法确定当我收到网络回调时 我是否已经初始化好view 如果服务器先后来了两条消息 一条创建一个view 一条对这个view做更新 有可能第二条消息来时 view还未初始化好

如果能像白鹭一样 有个资源加载组就好了 一方面我可以预加载资源组 另一方面使用的时候同步创建 可以保证我收到第二条消息的时候 view已经初始化完成