SuperAPI AI 工具集

2d-essentials

编程与开发

查看项目

更新于 10-15 22:40

技能介绍

用途:面向 Godot 4.3+ 的 2D 专用系统开发,所有示例针对 4.3+,不使用已弃用 API,先给 GDScript 再给 C#。相关技能包括 player-controller、animation-system、physics-system、camera-system、shader-basics、godot-optimization。

主要能力: 一、Canvas 层与绘制顺序。同一 CanvasLayer 内按场景树顺序绘制,可用 z_index 覆盖,z_as_relative 控制相对父节点。CanvasLayer 用于独立于相机变换的元素,常见层值:-1 视差背景、0 默认游戏层、1 HUD、2 暂停菜单与转场。可用 get_viewport().canvas_transform 手动滚动画布,并用 get_global_transform()、get_global_transform_with_canvas()、get_screen_transform() 做坐标转换(局部/世界/屏幕)。 二、TileMap。Godot 4.3+ 使用 TileMapLayer,一个瓦片图即一个节点即一层,由 TileSet 资源驱动(图集、属性、物理、自定义数据),支持地形自动拼接与场景集合瓦片。 三、视差滚动。Parallax2D 取代旧版 ParallaxBackground/ParallaxLayer,按层设 scroll_scale(0 静止、1 跟随相机 1:1、小数表示景深),repeat_size 实现无限平铺。 四、2D 光照与阴影。PointLight2D 与 DirectionalLight2D 投射光照,可配合法线贴图获得立体明暗,或对平面精灵使用叠加混合;LightOccluder2D 投射阴影。 五、2D 粒子。数量较多(≥50)或 GPU 驱动选 GPUParticles2D,数量少或不支持 GPU 的平台选 CPUParticles2D,二者共享 ParticleProcessMaterial 接口,差异主要在性能。 六、自定义绘制。在 CanvasItem 上重写 _draw() 绘制线、多边形、文本或任意形状,状态变化时调用 queue_redraw(),不要直接调用 _draw()。Godot 4.7+ 的 DrawableTexture2D 仍为实验性,不建议用于生产。 七、2D 网格。当大块透明区域浪费 GPU 填充率时,用 MeshInstance2D 替代 Sprite2D,可通过菜单 Sprite2D → Convert to MeshInstance2D 转换;适合全屏透明图、形状不规则的视差层、带大透明边框的分层图以及移动端/低端 GPU。 八、抗锯齿。绘制方法可传 antialiased 参数,Line2D 有 Antialiased 属性;注意 Godot 4.7 起画线抗锯齿不再添加羽化,升级后线条会变细,依赖旧外观的项目需加大宽度。MSAA 2D 仅适用于 Forward+ 与 Mobile 渲染器,不影响最近邻纹理内部锯齿、自定义 2D 着色器输出和字体渲染;像素画不要启用 MSAA 2D。 九、对齐与像素完美。编辑器可用网格吸附、旋转吸附与智能吸附;像素游戏可在项目设置中启用 Snap 2D Transforms to Pixel、Snap 2D Vertices to Pixel、Snap Controls to Pixels 防止亚像素抖动。

使用方式:按主题选用对应做法,将 TileSet 保存为外部 .tres 以便复用,注意视差纹理左上角需在 (0,0)、repeat_size 与实际纹理尺寸一致,启用阴影时添加 LightOccluder2D 并配置光照与遮挡剔除遮罩,GPUParticles2D 需设置有效 Visibility Rect。

限制:官方资料仅覆盖上述主题,未提供价格、平台支持范围或完整示例代码;DrawableTexture2D 为实验性;MSAA 2D 不支持 Compatibility 渲染器;具体版本行为差异需查阅对应迁移指南。