问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Godot引擎中CanvasItem、Node2D及自定义节点详解

创作时间:
作者:
@小白创作中心

Godot引擎中CanvasItem、Node2D及自定义节点详解

引用
CSDN
1.
https://blog.csdn.net/CoderZzz6310/article/details/137799390

CanvasItem节点

CanvasItem节点是Godot引擎中一个非常重要的基础节点,它继承自Node节点,因此具备Node节点的所有功能。CanvasItem节点的主要作用是处理2D场景中的绘制和渲染,它支持设置可视化界面和材质的颜色,是所有2D节点和GUI节点的基类。

CanvasItem节点的绘制顺序遵循树的深度优先遍历顺序,但可以通过设置Show Behind Parent属性来改变最终渲染到屏幕上的画面顺序。

Visible属性

Visible属性用于控制精灵节点的可视化状态。当设置为true时,节点将被渲染到屏幕上;当设置为false时,节点将不会被渲染。

Show Behind Parent属性

当一个节点被设置为Show Behind Parent时,它将被渲染在父节点的后面。这个属性对于实现一些特殊的视觉效果非常有用。

Modulate属性

Modulate属性是一个附加在CanvasItem上的贴图,可以用来改变物体的颜色。这个属性相当于给物体额外添加了一个颜色,类似于光线的效果,会附加在物体表面。

Self Modulate属性

Self Modulate属性与Modulate属性类似,但它只改变当前节点的颜色,不会影响其子节点。如果使用Modulate属性,那么父节点的颜色改变会传递给所有子节点;而使用Self Modulate属性时,只有父节点的颜色会被改变。

Light Mask属性

Light Mask属性通常与Light2D节点配合使用,用于控制光照效果。通过在Light2D节点中添加一张PNG图片并设置其Texture属性,可以实现光照效果的投影。

Light2D节点的Range属性中可以调整光照的范围和层级。

Material属性

Material属性用于设置物体的材质,包括色彩、纹理、光滑度、透明度等属性。在Godot中,材质实际上就是Shader,可以通过代码来控制GPU的图像渲染效果。

Material 材质,物体的质地,指色彩,纹理,光滑度,透明度,反射率,折射率,发光度。实际就是Shader
Texture 贴图,附加到物体表面的贴图
Shader 着色器,使用代码来渲染图形的技术,可以控制GPU运算图像效果的一段代码

通过改变Material的模式,可以实现对物体表面属性的复杂改变。

Use Parent Material属性

如果勾选Use Parent Material,那么所有子节点都会使用父节点的材质,实现材质的继承。

Ordering属性

Ordering属性用于控制节点的渲染顺序,其中z_index属性表示节点在Z轴方向上的位置。z_index值越大,表示节点越靠近屏幕,显示在更前面。

当两个节点成为父子关系时,z_as_relative属性默认启用。这意味着子节点的z_index值会相对于父节点进行计算。例如,如果父节点的z_index值是1,而子节点的z_index值是0,但由于z_as_relative属性被勾选,实际上子节点的z_index值会计算为1(0+1),显示在父节点的上面。

Node2D节点

Node2D节点继承自CanvasItem节点,因此具备CanvasItem节点的所有功能。Node2D节点的主要属性是Transform,它包含了位置(Position)、旋转(Rotation)和缩放(Scale)三个基本属性。在后续的脚本编程中,Transform属性是最常用的。

自定义节点

当现有节点无法满足新的需求时,可以通过创建自定义节点来解决。自定义节点的核心是通过脚本来实现,具体步骤如下:

  1. 创建一个新的GDScript脚本,命名为MyNode,并继承Node2D节点。
  2. 使用@icon注解来设置自定义节点的图标。
  3. 使用class_name关键字来定义自定义节点的名称。
  4. 使用@export注解来导出变量,使其可以在编辑器中直接编辑。
@icon("res://icon.svg")
extends Node2D
class_name MyNode

func _ready():
    print("my custom node")
    pass

@export var a: int = 1
@export var b: String

保存脚本后,就可以在项目中看到自定义的MyNode节点,并且可以编辑其中的变量ab

节点继承

通过继承现有节点,可以改变已有节点的功能。无论是自定义节点还是节点继承,核心都是通过脚本控制来达到想要的效果。例如,可以创建一个继承自Sprite2D节点的自定义节点,并重写其某些功能。

新建一个名为my_script的脚本,并将其挂载到Sprite节点的脚本属性上,就可以改变Sprite节点的现有功能。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号