6.GodotCanvasItem、Node2D及自定义节点

news2025/1/18 6:31:30

CanvasItem节点

![[Pasted image 20240415213917.png]]

  • CanvasItem节点,CanvasItem -> Node,所以CanvasItem继承了Node的所有功能
  • Canvas是画布的意思,所以CanvasItem代表了就是可以被绘制的节点,可以设置可视化界面和材质的颜色
  • 所有的2D节点和GUI节点都继承于CanvasItem节点
  • CanvasItem是按树的树的深度优先遍历顺序绘制的
  • 可以通过设置CanvasItem的Show Behind Parent来改变最终渲染到屏幕上的画面顺序
    ![[Pasted image 20240415214232.png]]
Visible

设置精灵节点的可视化
![[Pasted image 20240415214419.png]]

目前有两个精灵节点
子节点在父节点的上方
![[Pasted image 20240415214503.png]]

选中子节点,打开Show_behind_parent
![[Pasted image 20240415214526.png]]

modulate

附加在CanvasItem上的一个贴图
![[Pasted image 20240415214606.png]]

![[Pasted image 20240415214840.png]]

modulate改变颜色,就相当于给物体额外添加了一个颜色,相当于光线,额外的颜色附加在物体表面
![[Pasted image 20240415214855.png]]

self_modulate

仅仅给自己改变物体的颜色贴图
![[Pasted image 20240415215103.png]]

如果是Modulate,给父节点改变颜色,子节点也会跟着改变颜色
如果使用self_modulate,给父节点改变颜色,仅仅是父节点会改变颜色

light_mask

![[Pasted image 20240415215415.png]]

和Light2D节点配合使用
![[Pasted image 20240415215759.png]]

添加一个Light2D节点,PointLight2D
导入一张png图片添加到Texture里
![[Pasted image 20240415215912.png]]

![[Pasted image 20240415215956.png]]

可以看到添加到PointLight2D的图片被投影到Sprite节点里
![[Pasted image 20240415220708.png]]

在Light2D属性Range里可以改变层级
![[Pasted image 20240415220937.png]]

切换到2的话,就发现光线投影不到物体上了
![[Pasted image 20240415221434.png]]

material

![[Pasted image 20240415222133.png]]

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

![[Pasted image 20240415222436.png]]

新建一个material
通过改变模式,图片也会发生改变
material材质,改变物体表面的属性的一种贴图,和modulate有点类似
material是一种更复杂的材质

use_parent_material

![[Pasted image 20240415222644.png]]

如果勾选,所有子节点都是使用这个材质,让子节点也使用父节点的material,是一种继承

Ordering

z_index
![[Pasted image 20240415223252.png]]

z_index更大的话,显示会在更前面
![[Pasted image 20240415223745.png]]

原本在底下的精灵节点,将index改为1,比另一张0的大,变为显示i在上面
这个z_index是三维方向的,场景对于屏幕方向有一个z轴,z越大往屏幕越近,显示在最上面

当这两个节点称为父子关系时
![[Pasted image 20240415224049.png]]

这个z_as_relative是默认启用的
如果父节点的z_index值是1
那么子节点z_index虽然显示是0
但是因为z_as_relative是勾选上的,就相当于是0+1,其实也是1,和平常的父子节点显示没有区别,子节点在父节点上面,因为就是相对的一个关系
如果不想弄成相对位置,就把z_as_relative勾掉,这样父节点就到了子节点上面了

Node2D节点

  • Node2D节点,Node2d -> CanvasItem -> Node
    ![[Pasted image 20240415222926.png]]

Node2D节点继承于CanvasItem节点,CanvasItem节点继承于Node节点,所以Node2D节点包括了CanvasItem节点和Node节点的所有功能

![[Pasted image 20240415223145.png]]

Transform ,Node2d节点的基本属性,在后面的脚本编程中,Transform属性是最常用的
表示:

  • Position 位置
  • Rotation 旋转
  • Scale 缩放

自定义节点

  • 当发现现有的节点无法支持新的需求的时候,有两种方法去解决,自定义节点或者自定义脚本,核心都是脚本
  • 创建GdScrip脚本,叫MyNode,继承Node2D节点,并自定义节点的icon
@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
  • 保存,如果不保存无法看到我们创建到的节点,这一点需要特别注意
  • 添加刚刚创建的自定义节点
    ![[Pasted image 20240415224824.png]]

![[Pasted image 20240415224831.png]]

有两个变量a和b就是刚才脚本里定义的变量
![[Pasted image 20240415224950.png]]

输出my custom node

![[Pasted image 20240415225103.png]]

  • class_name 表示自定义节点的名称
  • @icon 表示使用的icon
  • 7、8行是定义的两个变量,并让这两个变量导出,可以在外部编辑器使用
  • 11行代码,输出变量
  • 3行,继承Node2D节点

节点继承

  • 通过继承现有节点,来改变已有节点的功能
  • 无论是自定义节点还是节点继承,核心都通过脚本控制达到自己想要的效果
    MyNode节点继承自Node2D节点,项目中看到就是这个节点多了两个变量,Node2D的某些功能被拓展了
    ![[Pasted image 20240415225717.png]]

将MyNode脚本修改
![[Pasted image 20240415225844.png]]

改为继承Sprite2D节点,让region_enabled默认等于true
region_enabled是在Sprite节点中定义的
继承了Sprite过后,就可以重写Sprite的功能

如何通过脚本去改变节点的功能

新建一个my_script节点
![[Pasted image 20240415230219.png]]

同样修改脚本
![[Pasted image 20240415230248.png]]

然后将这个脚本挂载到Sprite节点的脚本属性上
就改变了Script的现有功能

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1608439.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用docker配置CCM-SLAM

一.Docker环境配置 1.拉取Docker镜像 sudo docker pull ubuntu:18.04拉取的为ununtu18版本镜像&#xff0c;环境十分干净&#xff0c;可以通过以下命令查看容器列表 sudo docker images 如果想删除多余的docker image&#xff0c;可以使用指令 sudo docker rmi -f <id&g…

openplc Linux 使用modbus RTU 从机通讯

1.Linux 环境下&#xff0c;openplc 默认使用的是modbus tcp协议通信。 想要使用串口 modbus rtu 通讯可以通过在runtime中添加SlaveDevices从机设备 2.添加设备&#xff0c;分配地址。 左边添加串口配置&#xff0c;右边是需要通讯的地址&#xff0c;从机地址都是从100开始&am…

了解光纤的最大损耗

在电信和数据传输领域&#xff0c;保持最佳的网络性能和可靠性至关重要。 影响网络完整性的关键因素之一是光纤中的信号丢失。信号损耗&#xff0c;也称为衰减损耗或光纤衰减&#xff0c;测量光缆输入和输出之间的光损耗量。本文将深入探讨光纤中的主要损耗&#xff0c;并指导您…

【python】计算水仙花数

【python】计算水仙花数 "水仙花数"是指一个3位数&#xff0c;它的三个位上的数字的3次幂之和等于它本身。例如&#xff0c;"153"就是一个水仙花数&#xff0c;因为1^3 5^3 3^3 153。以下是一个Python代码示例&#xff0c;用于计算并打印出所有的三位数…

抹机王的使用教程以及常见问题

首先请确保你已经正常安装了XPosed/EDXP/LSP框架并已激活抹机王模块&#xff0c;其中XP和EDXP模块均只需要框架内激活抹机王并重启即可&#xff0c;LSPosed注意作用域需要勾选上自己想要修改的APP&#xff08;如果你还是一意孤行只勾选系统框架那改机完全没用就是你自己的想法了…

性能测试-数据库优化二(SQL的优化、数据库拆表、分表分区,读写分离、redis、数据库监控)

数据库优化 explain select 重点&#xff1a; type类型&#xff0c;rows行数&#xff0c;extra SQL的优化 在写on语句时&#xff0c;将数据量小的表放左边&#xff0c;大表写右边where后面的条件尽可能用索引字段&#xff0c;复合索引时&#xff0c;最好按复合索引顺序写wh…

LeetCode 57—— 插入区间

阅读目录 1. 题目2. 解题思路3. 代码实现 1. 题目 2. 解题思路 第一步&#xff0c;我们先寻找新区间和原始区间列表的重叠部分。 假设新区间为 [ x 1 , x 2 ] [x_1, x_2] [x1​,x2​]&#xff0c;原始区间列表中的其中一个区间为 [ y 1 , y 2 ] [y_1, y_2] [y1​,y2​]&…

C++学习 <day1-C++介绍基础>

一、什么是C 1. C介绍 C由程序员控制生命周期&#xff08;性能提升&#xff09;&#xff1b;C数据存储等方式由硬件决定&#xff08;性能提升&#xff09;&#xff1b; C11 引入了 type_traits/range&#xff1b; C17 删除了 auto_ptr&#xff1b; 二、C开发环境&相关工…

数据库锁等待排查方法、命令行安装数据库及授权文件更新

欢迎关注“数据库运维之道”公众号&#xff0c;一起学习数据库技术! 本期将为大家分享“数据库锁等待排查方法、命令行安装数据库及授权文件更新”的运维技能。 关键词&#xff1a;锁等待、V$LOCK、V$TRXWAIT、死锁、锁超时、命令行部署达梦、授权文件更新 当用户反馈执行SQL语…

“开关是灯的日出日落,日出日落是灯的开关”

C语言刷题 day01 本篇是C语言刷题大杂烩&#xff0c;收集了笔者遇到的认为有价值的题目&#xff0c;本篇会持续更新~~ day01 至少是其他数字两倍的最大数 题目原文&#xff1a; 题意解析&#xff1a; 请你找出数组中的最大元素并检查它是否 至少是数组中每个其他数字的两倍 …

Spring Cloud+Uniapp 智慧工地云平台源码 智慧工地云平台AI视频分析应用

目录 AI应用与环境治理 设备管理与危大工程 塔吊安全监管 智慧工地APP端 智慧工地硬件设备 智慧工地主要功能模块 智慧工地可以通过以下几个方面为建筑行业赋能&#xff1a; 1.提高工程效率 2.提高工程安全性 3.提高工程质量 4.提高工程管理效率 绿色施工 质量管理…

C++之类和对象二

目录 1.类的6个默认成员函数 2. 构造函数 3.析构函数 1.类的6个默认成员函数 如果一个类中什么成员都没有&#xff0c;简称为空类。空类中什么都没有吗&#xff1f;并不是的&#xff0c;任何一个类在我们不写的情 况下&#xff0c;都会自动生成下面6个默认成员函数。 clas…

国民经济行业导入数据库码表

目录 1、先去下载word文档图片如下 2、粘贴到excel中形成insert 语句 3、创建临时表存excel中数据 4、创建码表保存信息 5、编写存储过程放入表中 5.1存储第四级码值及父机构 5.2存储第三级码值及父机构 5.3存储第二级码值及父机构 5.4存储第一级码值 6、导入成功查看…

1.微服务介绍

完整的微服务架构图 注册中心 配置中心 服务集群 服务网关 分布式缓存 分布式搜索 数据库集群 消息队列 分布式日志服务 系统监控链路追踪 Jenkins docker k8s 技术栈 微服务治理&#xff1a; 注册发现、远程调用、负载均衡、配置管理、网关路由、系统保护、流量…

【学习】测试新项目该如何高效的展开测试?需要做哪些规划?

当我们收到测试项目时&#xff0c;如何高效地展开测试是我们作为测试人员所要面临的一大挑战。测试是软件开发过程中不可或缺的一环&#xff0c;它确保了产品的质量&#xff0c;降低了出现问题的风险&#xff0c;提高了用户的满意度。因此&#xff0c;我们需要制定合理的测试计…

前端三剑客 HTML+CSS+JavaScript ① 基础入门

光永远会照亮你 —— 24.4.18 一、C/S架构和B/S架构 C:Client&#xff08;客户端&#xff09; B:Browser&#xff08;浏览器&#xff09; S:Server&#xff08;服务器&#xff09; C/S 架构&#xff1a; B/S 架构&#xff1a; 大型专业应用、安全性要求较高的应用&#xff0c;还…

2024华中杯C题完整论文讲解(含完整python代码及所有曲率插值和坐标数据表格)

大家好呀&#xff0c;从发布赛题一直到现在&#xff0c;总算完成了2024华中杯C题光纤平面曲线重构完整的成品论文。 本论文可以保证原创&#xff0c;保证高质量。绝不是随便引用一大堆模型和代码复制粘贴进来完全没有应用糊弄人的垃圾半成品论文。 共38页&#xff0c;一些修改…

2024年国内五大企业邮箱,哪个最靠谱?

电子邮件是企业办公的重要手段&#xff0c;目前我国五大企业的邮箱都有Zoho Mail公司邮箱、腾讯企业邮箱、阿里企业邮箱、网易企业邮箱、263公司邮箱。可是哪个电子邮件最可靠呢&#xff1f;可靠的企业邮箱必须要安全性高、稳定性高&#xff0c;能够保护企业的隐私不被泄露&…

【毕业设计】基于JAVA的两个通用安全模块的设计与实现(源代码+论文)

目录 1.说明 2.系统设计与实现 2.1总体结构图 2.2与数据库建立连接 2.3与数据库建立连接 2.4数字证书创建 2.5关键代码说明 1.说明 详细介绍基于口令的身份认证与文件安全传输两个通用安全模块的设计原理和实现过程&#xff0c;分析了当前口令保存的安全性&#xff0c;提出了…

噪声系数测试之增益法

提到增益法测试噪声系数,大家并不陌生,这是一种简洁的测试方法,精度不如Y因子法,但是在某些测试场合,比如只有频谱仪而没有噪声头时,且待测件具有非常高的增益时,就可以使用增益法测试噪声系数。 增益法测试噪声系数的连接示意图如图1所示,其思路为:DUT输入端端接50 …