creator3.7版本,微信开放域实现好友排行榜,主包太大,能否用ts写一个简单的,不勾选开放域

creator3.7版本,微信开放域实现好友排行榜,主包太大,能否用ts写一个简单的,不勾选开放域。
看了很多教程,一头雾水,要么太复杂,要么年代久远。有没有大佬在creator里面用ts直接写成功的,能否借鉴一下

不去开放域那你数据是自己服务器提供嘛?不太现实吧,数据肯定没有微信你那边获取到的完整。这就不是cocos的问题了,是微信那边不支持啊。

看到有的帖子说自己写只要几k的嘛,开放域运行时动态生成不行哇?

商店有 记得是0.9元

之前要实现排行榜的话,项目会很大。现在小很多了,就几个文件,我最近做的一个小游戏就是参考了这个文档:开放数据域 · Cocos Creator 很容易实现。

如果不用这个的话,那就是自己服务器存储数据。

看到你这个我才明白他可能是啥意思,他是不想用cocos的这个功能,因为打包出来脚本268KB他没做分包导致主包大小超标了。这么大的话一个是建议他做分包功能,毕竟自己写只能解决现在的问题,主包瓶颈问题迟早会来的。自己写的话确实很小毕竟功能是定制开发,没有闲置的代码,自然小很多。
let sharedCanvas = wx.getSharedCanvas();
let context = sharedCanvas.getContext(‘2d’);
context.clearRect(……
context.drawImage(……
context.fillText
context.font
context.fillStyle
其实自己写就是用这些函数绘制图片、文字,在游戏里把要绘制的区域的位置告诉开放域,后面的底图就是自己游戏里的。关键还是看自己怎么写吧

自己写的话,是不是不用在构建的时候勾选“开放数据域”了?商店那个我买了,也要求勾选的。另外,这个功能好像不能分包吧,是构建后生成的文件夹,无法在构建前选择分包。

不用勾,代码放进指定位置就行。但开放域这个只能放主包里,自己写的话很小的,没压缩的代码也就32KB,而且已经是写了7、8个的功能了。,而且开放域只做两件事情就是在指定区域画头像,写昵称。其他的背景,排版,计算全部放进分包代码里。用滚动视图的话会比较麻烦,这个得自己写了,每滚动一下就传信息刷新界面,代码主要也还是在分包里。

主要是cocos的开放域这个功能,本身就要几百k,不包括自己写的。另外,自己写代码据我了解,主要是在构建后的那个开放域文件夹openDataContext,有个index.js文件里面写。
image

啊,真不用勾啊!是不是构建后,自己建一个openDataContext文件夹放在wechatgame下面,然后自己建index.js写程序?

是啊,这个功能后来才有的,但是微信早就有了,肯定是旧版本的只能手撸啊,既然能手撸肯定是可以不用勾选,不然他就做成必选了

那么cocos里面需要开放域那个组件怎么办?不然在哪里显示排行榜,普通的sprite节点就行吗

开放域组件无非是cocos转换好坐标帮你画上去的,你现在得自己算坐标画上去罢了

真的啊,用什么函数画东西能告知一下吗,是在index.js里面画吗?还是在cocos里面用ts画

我前面都写了啊,具体怎么用你自己研究吧,在index.js里面画

好的,多谢告知,我研究下

不行啊大佬,我的步骤如下:
1、新建工程,简单添加2个Sprite节点bg和open,open上添加subContextView组件用来显示排行榜。
image
image
2、Canvas上添加一个game脚本,给子域发消息,如下:
image
3、裁剪引擎功能,如下:


image
4、构建微信小游戏包,不勾选“生成开放数据域工程模版”,如下:
image
5、在生成的wechatgame文件夹手动加一个openDataContext文件夹,下面手动加一个index.js,在index.js写初始化代码如下:
image
6、然后运行微信工具,出错:
image

问题:
所以是不是必须勾选那个“生成开放数据域工程模版”,然后修改自动生成的文件?还是我的步骤有错,其实可以不勾选?向大佬请教!

game.json里写没写对应的配置啊"openDataContext": “src/myOpenDataContext”,

真是,加了这句就没弹出错误了,算是低级错误了,还是大佬一针见血!多谢多谢!