从2.x到3.x的一些变化 / 一些以前不需要注意的变化,主要是使用3.x开发2D游戏的变化,做记录,有了就更新
开个帖子共同补充,毕竟好多小伙伴TS功底并不扎实,所以在2.x以前都是比较简单的写法就可以实现一些效果,但是严格一点并不是什么坏事,就是以前的部分实现方式有一些改变,需要去看看提示看看源码才能解决,如果完全由引擎组的大大们去一一罗列出来,这也太耗费精力了(不能穿插太多我们自己就可以解决的事),并且每个程序员的使用习惯还不是统一的。
1.创建项目
因为是预览版本,所以很多功能都还不是很完善,在创建的时候有三个选项:

- 如果想直接开始2.x的开发,就选第一个 (自己创建2d项目工程文件夹结构)
- 如果想看看3.x的基本目录结构,就选第二个 (有默认的官方3d场景演示场景和项目工程文件夹结构)
- 如果想看看官方案例,就选最后一个(自己找到对应的场景,划水去。。。)
总的来说,对2d开发,这次预览版还不是很友好
我们做2d开发,选择第一个创建后,是一个3d场景:

点击3D切换为2D场景,在assets中创建你的2D项目文件结构

然后在默认场景中创建Canvas,保存当前场景到项目Scene中

到这一步,后续添加其它组件就跟2.x差不多了,后续引擎组大大们应该会对开发2D项目做一些便捷性的优化
2.部分差异
-
cc.Node 组件区别:

多出了一个 cc.UITransform 组件,这个用过 U3d 的朋友应该不陌生,我们 2D 开发只需要知道,原先2.x中的节点属性 ContentSize(内容尺寸),AnchorPoint(锚点) 这两个属性分离了出来,要修改它,你就必须使用这个组件
还有就是这个 Layer 2d-x的元老了,相信应该很好理解
而 Priority 这个属性就很香了,当然你也可以不管它,目前的理解就是自定义渲染优先级,当界面有很多文字和图片混合存在的时候,应该会很有用(还没有试验)
当然还发现少了一些属性:
-
-
Opacity需要单独添加 cc.UIOpacity 组件
-
Opacity需要单独添加 cc.UIOpacity 组件
-
- Skew
这个应该是被移除了
-
- Color
你需要添加cc.Sprite组件,相当于你需要使用到color的时候你才有color,其它需要使用到Color的组件也是同理
-
cc.Sprite 组件区别:
多了一个自定义渲染(CustomMaterial 渲染相关的组件基本都有这个属性)和灰度渲染(Grayscale)
这里有更加详细的解释:
传送门 -
代码的严格模式:
3.x默认是使用的TS严格模式,简单说就是你在声明或获取任何值的时候必须为这个值进行负责到底,并且必须保证它能正确
看社区大大们的讨论更为贴切
当然你也可以选择关闭TS严格模式,关闭后就跟2.x没有任何区别了:


设置为false,重启一下代码编辑器就可以了