
文档教程游戏开发【免费下载链接】godot-docsGodot Engine official documentation项目地址https://gitcode.com/GitHub_Trending/go/godot-docs点击查看免费下载CanvasItemMaterial 是 Godot 中为 2D 场景节点CanvasItem定制纹理渲染方式的专用材质。本文以仓库中 CanvasItemMaterial 官方类文档 为骨架系统讲解其五大混合模式、三大光照模式以及专为 2D 粒子系统设计的翻页动画Flipbook属性并结合仓库教程与类定义源码给出可直接落地的编辑器操作和 GDScript 配置方案。一、CanvasItemMaterial 是什么定位与继承关系CanvasItemMaterial 是 Godot 引擎内置的一种材质用于修改与 CanvasItem 相关联的纹理。其官方描述指出它专精于描述纹理的**混合Blend与光照Lighting**行为如果需要对 CanvasItem 与光照的交互进行更彻底的自定义则应改用 ShaderMaterial见 CanvasItemMaterial 类文档。继承链CanvasItemMaterial Material Resource RefCounted Object在 Godot 的类引用中继承方向为从左到右子类在前父类在后。CanvasItemMaterial 继承自 Material而 Material 本身是一个 Resource资源因此材质可以像其他资源一样被保存、复用和共享。Material 资源最终被挂载到某个CanvasItem节点上。CanvasItem 是所有 2D 空间的抽象基类Node2D2D 游戏对象和ControlGUI 控件都继承自它见 CanvasItem 类文档。CanvasItem 本身具备material、modulate、self_modulate、texture_filter、texture_repeat、z_index等属性其中material属性就是 CanvasItemMaterial 的挂载点CanvasItem 属性表。在仓库中的使用场景2D 粒子系统的翻页动画让 GPUParticles2D / CPUParticles2D 使用雪碧图spritesheet逐帧播放动画。2D 光照与阴影控制精灵在 2D 光照下的反应例如不参与光照、只显示光照等。纹理导入优化配合预乘 AlphaPremultiplied Alpha纹理修复带 Alpha 边缘的暗边问题。二、BlendMode 混合模式五种纹理合成方式blend_mode属性决定了材质的渲染如何作用于其下的纹理即当前像素如何与画布上已有的像素合成。CanvasItemMaterial 提供 5 种混合模式枚举BlendMode常量值说明BLEND_MODE_MIX0标准混合默认。颜色被视为与 Alpha不透明度无关的独立值。BLEND_MODE_ADD1加法混合。常用于火焰、光效、爆炸等发光效果。BLEND_MODE_SUB2减法混合。BLEND_MODE_MUL3乘法混合。常用于阴影、遮罩类效果。BLEND_MODE_PREMULT_ALPHA4混合模式但颜色被视为已经由 Alpha 预先乘过Premultiplied Alpha。属性默认值为0即BLEND_MODE_MIX对应访问器为set_blend_mode(value)与get_blend_mode()见 CanvasItemMaterial 属性描述。关键细节MIX 与 PREMULT_ALPHA 的区别两者表面都是混合但前提不同——MIX 假设颜色通道独立于 AlphaPREMULT_ALPHA 假设纹理颜色已经与透明度相乘即 RGB 值被预先乘以 A 值。后者配合预乘 Alpha导入格式的纹理使用可避免半透明边缘出现暗色描边。实战为 Sprite2D 配置加法混合在 2D 光照与阴影教程 中官方推荐用加法混合的精灵替代部分 2D 光源以获得更快渲染性能特别适合子弹、爆炸这类短命动态特效加法精灵的渲染不需要经过独立的光照渲染管线因此比 2D 光源快得多且可与 AnimatedSprite2D或 Sprite2D AnimationPlayer组合创建动画化的 2D光源。但需要注意其局限该教程原文明确列出混合公式不如真正的 2D 光照准确无法正确照亮完全黑暗的区域加法精灵不是光源无法投射阴影加法精灵会忽略其他精灵上的法线贴图和镜面贴图。编辑器操作步骤创建 Sprite2D 节点并为其指定纹理在检视面板滚动到CanvasItem Material区域展开后点击Material属性旁的下拉菜单选择New CanvasItemMaterial点击新创建的材质进入编辑将Blend Mode设置为Add见 2D 光照与阴影教程。实战Premultiplied Alpha 材质匹配在 导入图片教程 中官方指出修复暗色边缘的另一种方案是使用预乘 Alpha。启用该导入选项后纹理会被转换为预乘格式此时必须配合特定材质才能正确显示在 2D 中为使用该纹理的 CanvasItem 创建 CanvasItemMaterial并将其混合模式设为Premultiplied Alpha若使用自定义 CanvasItem Shader则应使用render_mode blend_premul_alpha;。GDScript 运行时配置示例# 为 CanvasItem如 Sprite2D动态创建并配置 CanvasItemMaterial var mat : CanvasItemMaterial.new() mat.blend_mode CanvasItemMaterial.BLEND_MODE_ADD # 挂载到节点 $Sprite2D.material mat三、LightMode 光照模式控制材质对 2D 光照的反应light_mode属性决定材质如何响应光照。CanvasItemMaterial 提供 3 种光照模式枚举LightMode常量值说明LIGHT_MODE_NORMAL0正常模式默认。同时使用对光照敏感与不敏感两类材质属性进行渲染。LIGHT_MODE_UNSHADED1无光照模式。材质渲染时如同不存在任何光照。LIGHT_MODE_LIGHT_ONLY2仅光照模式。材质渲染时如同只存在光照。属性默认值为0LIGHT_MODE_NORMAL对应访问器为set_light_mode(value)与get_light_mode()见 CanvasItemMaterial 属性描述。典型用途UNSHADEDUI 元素、背景装饰等不希望被 2D 光照影响的对象或在不需要光照计算的渲染场景下节省开销。LIGHT_ONLY搭配modulate等属性让对象只呈现光照效果常用来制作纯受光物体或光照可视化调试。GDScript 示例var mat : CanvasItemMaterial.new() mat.light_mode CanvasItemMaterial.LIGHT_MODE_UNSHADED # 让精灵完全不受 2D 光照影响 $Sprite2D.material mat四、粒子翻页动画Flipbookparticles_anim_* 四件套这是 CanvasItemMaterial 最具特色的能力让 2D 粒子系统播放雪碧图序列帧动画。官方文档将其应用范围明确限定在 GPUParticles2D 与 CPUParticles2D 节点上。属性一览属性类型默认值说明particles_animationboolfalse启用基于雪碧图的动画功能。设为true后其余particles_anim_*属性才会生效并在编辑器中可见。particles_anim_h_framesint—雪碧图的列数。particles_anim_v_framesint—雪碧图的行数。particles_anim_loopbool—设为true时粒子动画将循环播放。对应访问器set_particles_animation(bool)/get_particles_animation()、set_particles_anim_h_frames(int)/get_particles_anim_h_frames()、set_particles_anim_v_frames(int)/get_particles_anim_v_frames()、set_particles_anim_loop(bool)/get_particles_anim_loop()。关键约束官方文档原文要点particles_anim_h_frames与particles_anim_v_frames只有在particles_animation为true时才被使用、并在编辑器中可见particles_animation开启后还必须把ParticleProcessMaterial.anim_speed_maxGPUParticles2D 路径或CPUParticles2D.anim_speed_max设置为正值动画才会播放particles_animation及依赖它的其他particles_anim_*属性对其他类型的节点没有效果。从类定义源码看依赖关系在 CanvasItemMaterial 类文档 中particles_animation的说明明确引用ParticleProcessMaterial.anim_speed_max对应 ParticleProcessMaterial 类CPUParticles2D.anim_speed_max该类文档中该属性默认值为0.0见 CPUParticles2D 类文档。即粒子动画的播放速度由粒子节点的动画速度参数驱动CanvasItemMaterial 只负责如何切帧不负责切多快。实战为 GPUParticles2D 配置翻页动画以下流程来自官方 2D 粒子系统教程 的 Using an animation flipbook 小节。官方示例使用了一张5 列 × 7 行的翻转书纹理在场景中创建GPUParticles2D节点并在检视面板的Process Material中添加New ParticleProcessMaterial在Texture属性中载入你的翻转书雪碧图教程配图示例纹理 5 列 7 行来源为 JoesAlotofthings 的开源粒子素材CC BY 4.0在粒子节点的Material区域创建New CanvasItemMaterial见创建截图在新材质中勾选Particle Animation将H Frames设为列数5、V Frames设为行数7并按需勾选Particles Anim Loop见配置截图随后ParticleProcessMaterialGPUParticles2D或 CPUParticles2D 检视面板中的Animation 区域设置才会生效——将Speed Min / Speed Max设为正值教程举例设为 1 可线性播放动画即可播放参考 粒子流程材质 2D 教程 的 Animation 小节。重要提示官方原文若翻转书纹理是黑色背景而非透明背景需将混合模式改为Add才能正确显示也可以先在图像编辑器中把纹理处理为透明背景如 GIMP 的Color Color to Alpha。粒子节点选型建议官方 2D 粒子系统教程 指出GPUParticles2D更高级使用 GPU 处理粒子效果通过 ParticleProcessMaterial 配置CPUParticles2DCPU 驱动与 GPUParticles2D 功能几乎一致但大量粒子时性能较低在低端设备或 GPU 瓶颈场景可能反而表现更好官方明确表示今后不会再为 CPUParticles2D 添加新功能但接受合并 GPUParticles2D 已有功能的 PR因此推荐默认使用 GPUParticles2D除非有明确理由可通过工具栏CPUParticles2D Convert to GPUParticles2D相互转换反向转换在使用了仅 GPU 特性时可能出问题。五、综合应用一张可复制的完整 GDScript 配置将混合模式、光照模式与粒子动画结合可得到一段完整的运行时配置示例extends GPUParticles2D func _ready() - void: # 为粒子节点创建 CanvasItemMaterial 并启用雪碧图动画 var mat : CanvasItemMaterial.new() mat.particles_animation true mat.particles_anim_h_frames 5 # 雪碧图列数 mat.particles_anim_v_frames 7 # 雪碧图行数 mat.particles_anim_loop true mat.blend_mode CanvasItemMaterial.BLEND_MODE_ADD # 黑色背景翻转书需要加法混合 material mat # 注意还需在 ParticleProcessMaterial 上设置动画速度正数才会播放 # 例如 process_material.anim_speed_min / anim_speed_max# 若使用 CPUParticles2D则动画速度在节点属性上配置 # cpuparticles.anim_speed_min 1.0 # cpuparticles.anim_speed_max 1.0六、相关资源速查类文档CanvasItemMaterial、CanvasItem、Material、ParticleProcessMaterial、GPUParticles2D、CPUParticles2D教程2D 粒子系统、粒子流程材质2D、2D 光照与阴影、导入图片配图粒子翻页动画创建截图、配置截图小结CanvasItemMaterial 用两个枚举BlendMode 5 值、LightMode 3 值加四个粒子动画属性覆盖了 2D 纹理混合、光照响应与粒子翻页动画三大核心场景。编辑器中的每一步操作都能在官方教程与类文档中找到对应说明将 Blend Mode 设为 Add、将 Light Mode 设为 Unshaded、勾选 Particle Animation 并配置行列帧数是最常被组合使用的三组配置。若需更自由的着色器级控制如逐像素光照、自定义混合公式官方文档建议进一步使用 ShaderMaterial。赞分享文档教程游戏开发【免费下载链接】godot-docsGodot Engine official documentation项目地址https://gitcode.com/GitHub_Trending/go/godot-docs点击查看免费下载相关推荐用 tsParticles 打造粒子动画 404 页面vanilla 模板完整实战指南用 tsParticles 打造粒子动画 404 页面vanilla 模板完整实战指南 tsParticles 官方仓库在 templates/404 htt前端tsParticles Interaction Plugins 全面指南外部交互、粒子间交互与 Light 光照模式详解tsParticles Interaction Plugins 全面指南外部交互、粒子间交互与 Light 光照模式详解 导读 本文聚焦于 tsParticl前端tsParticles Caustics 调色板实战用 screen 混合模式与五色光斑打造水下焦散粒子背景tsParticles Caustics 调色板实战用 screen 混合模式与五色光斑打造水下焦散粒子背景 Caustics焦散调色板是 tsParti前端上一篇MindsHub Cowork 源码构建与多模块开发实战从 Superproject 架构到本地运行的完整指南下一篇从0到1部署WeKnora智能知识库5条命令跑通RAG问答全流程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考