加载一个json不可以直接require('a.json')吗

一定要cc.load吗,不想异步加载,只是个配置文件,想启动就同步加载了,node里面可以require(‘a.json’),creator里报错说找不到,如果现在确实不行以后能增加这个支持吗?或者告诉我怎么同步加载json

json 不会 import 到资源库中,目前不能同步加载。这么做的原因是有些 json 非常大,全部预加载会影响游戏启动速度。目前没有计划对这块同步策略进行调整。

异步甚好!!! 这样写出来的代码,既能保证低端机上不阻塞。 同时也能保证有端无端同步。
我是一直比较建议资源相关的加载函数纯异步的。。 根本不要存在同步的函数。。。 避免选择疑难导致的诸多争议和问题。
成功案例:Adobe Flash

1赞

那我就一个配置文件并不大,就启动时候加载一次,异步我就要回调控制确保完成才做下一件事,我有多个配置文件,比同步多不少代码那,我没有选择困难,真正的程序员知道自己要什么,希望给同步api,给多一个选择。

临时解决方案:
//a.js:
module.exports = {
x:1,
y:2
}

//use_a.js:
const a = require(‘a’);

1赞
    var url = "b", _type = cc.RawAsset;
    cc.loader.loadRes(url, _type, function (err, res) {
        cc.log(err, res)
    })

加载json可以用loadres这个是我发现最好用的了。 加载的是resources/b.json

这个是异步的,只不过加载的是本地的json,那个load可以加载一个网上位置的json

喔,没看清你的问题。确实是异步的。小的json配置你直接写js也一样的。

暂时只能这样了。但是有时候工程环境是比较复杂的,我这个json其它项目也用的,其它项目必须用json,所以下一步我也只能做个脚本,每次这个json改过以后,自动插入第一行,扩展名改为js,然后在creator里用。感谢以上回复的人,还是那句话,需要同步api,代码简单,不然导致我外层调用代码被迫改成回调风格,没这个必要,我是程序,我知道自己在干什么。

我前面说了,需要实现同步加载的话,只能预加载。也就是说启动游戏时就要把所有 json 都预先加载进来。你是知道自己在做什么,可是别人的项目不一定适合这么做。Creator 该如何知道哪个 json 需要预加载哪个不用呢?是不是应该在 json 上面增加一个属性?同时也增加了用户的学习成本?

且不说实现起来的技术难度,我们的技术路线会尽量偏向统一处理,否则明天又会有人跳出来说 plist 和 xml 也要能同步加载啊!那到时候又是重复这套工作量。

这里的需求我个人倾向于将来采用 async/await 来实现,让不喜欢写异步调用的人也能写出同步的代码,虽然底层仍然是异步的。至于 async/await 实现以前怎么办?我建议你先忍忍,用异步吧,其实也没多费事,在初始场景中把需要的资源全部一次性加载进来就是了。

1赞

只能预加载?这个是不是因为你们会所有js和json编译成一个文件?nodejs可是可以直接require一个json的。
一直不理解你们js编成一个文件干什么,加速?

你好,这和我们编译成几个文件无关。node.js 可以同步加载,但是浏览器不是 node.js。