2.X和3.X版本差异这么大,真的无所似从

官方推荐新项目用3.X,所以就用了3.X。
最近要做一个翻书特效,论坛里一搜全是2.X的资料。基本上都要用到 cc.Assembler ,但是没人告诉我这东西在3.X里面改成啥了啊。有些插件也因为3.X更新太多而断更了。
版本更新更好是没错,但论坛长时间积累下来的很多技术解决方案都随着更版而报废这是有问题的啊。
附一张图
123

该学的还是要学,而已当你学了deno后又来个bun :joy:

自定义 assembler 可以参考 官方技术仓库的几个范例,有几个范例就是通过自定义 assembler 来实现的。

https://github.com/cocos/cocos-awesome-tech-solutions/tree/3.4.x3.5.x-release/demo/Creator3.4.2_2D_SpriteSplit

https://gitee.com/yeshao2069/CocosCreatorDemos/blob/v3.6.x/demo/2dP1/Creator3.6.0_2D_SpriteSplit/assets/split/render.ts

自定义顶点格式,不难。难的是学习的心。

@property(Node)
target:Node;
3.x 这种现在是没有意义了吗,

3.x 真的是变化有点大,导入2.x的工程Demo改的都头大

这是属性装饰器用法,可以用的。

3.0 开始,框架调整了。

若干年前刚进一家公司,接手一个cocos-js项目
我说现在creator 1.7很好用,重写再维护方便些,老板同意了。

过了一年,我又去和老板说最新的creator 2.3性能强了很多,再重写一遍吧,老板又同意了。

又过了一年,老板看到creator 3.4了…
然后就没有然后了

于是老板换了一个喜欢3.x的程序员

请问一下,我在代码里这样写
@property(Node)
target: Node | null = null;
但是编辑器这边显示是这样的


3.x 这种用法是怎么样的?还是说我用的不对,
另外,如果在代码中使用
image
为啥 this.target 就不能使用,this.node 就可以使用了,
刚入手 3.x 求帮忙答疑一下

用这种方式 target : Node = null!; 或者 target !: Node;

另外,在使用的时候,你需要判空。 因为你的 类型 是 Node 或者 null,当 为空的时候,你调用 this.target.getComponent 是有问题的。

可以修改为 this.target!.getComponent 或者是 if (this.target) { this.target.getComponent}

按你说的调整了一下
image
但是编辑器界面显示还是一样,点击 create 也没有效果


好像没有解决本质问题…

代码做了修改
image

我知道你的问题了。

这个确实也和新版本改动有关系。因为去掉了 cc. ,所以之前2.x 使用的是 cc.Node 不会和 ts 内置的 Node 冲突。现在要使用引擎里面的 Node, 你需要 import { Node } from ‘cc’; 才行,不然默认使用到了 ts 内置的Node

检查一下 import 里面是不是没有引入 Node

转unity吧
如果你们是大型项目还是unity靠谱点起码版本迭代没那么辛苦

技术不会一成不变,2.4又不是不能用,我很欣赏引擎组能不断迭代,这样才能有进步

我还在倔强地用着cocos2djs

论一个成熟产品的重要性