5.Godot节点和功能及Node节点属性分析

初识godot游戏引擎并安装 Godot是一款自由开源、由社区驱动的2D和3D游戏引擎。游戏开发虽复杂,却蕴含一定的通用规律,正是为了简化这些通用化的工作,游戏引擎应运而生。Godot引擎作为一款功能丰富的跨平台游戏引擎,通过统一的界面支持创建2D和3D游戏。它提供了一套全面的通用工具,使得用户能够专注于游戏制作本身,无需从头开始构建基础功能。 阅读详情
AI摘要

本文详细解释了Godot游戏引擎中节点(Node)的概念,如何通过节点实现功能如图片显示、刚体交互,并介绍了Script的挂载与使用,以及ProcessMode和ProcessPriority对节点执行顺序的影响。,

1. 节点和功能的关系

  • 节点 Node ,用于实现一种功能,例如,Sprite 节点,用于图片的显示
  • 一个节点的功能取决于它挂载了哪些子节点,它包含了哪些功能的子节点,就包含了对应子节点表示的功能
  • 节点是可选的,可以添加、可以删除,就代表添加哪些功能,删除哪些功能
  • 先创建一个空的节点,再选择需要的节点
有一个player节点,给player节点挂载一个sprite节点,用来显示一张图片
再挂载一个rigidbody2d节点,把它表示成一个刚体的节点,给player赋予刚体的功能

![[Pasted image 20240415140522.png]]

  1. 先把node2d更改类型
    ![[Pasted image 20240415140542.png]]

在下面挂载一个node2d节点,命名为player
![[Pasted image 20240415140632.png]]

![[Pasted image 20240415140720.png]]

  1. 再挂载一个图片,说明这个节点是有图片要显示的
  2. 给player增加一个刚体的功能,继续添加子节点
    ![[Pasted image 20240415140928.png]]

![[Pasted image 20240415140956.png]]

  1. 这里提示需要再添加一个碰撞体
    ![[Pasted image 20240415141050.png]]

![[Pasted image 20240415141107.png]]

  1. 提示需要给碰撞体选择一个形状
    ![[Pasted image 20240415141140.png]]

  2. 在右边选择一个长方体的样式
    ![[Pasted image 20240415141232.png]]

  3. 再添加一个remotetransform2d
    把它关联到刚才的sprite节点
    ![[Pasted image 20240415141332.png]]

现在就给player添加了一个刚体的功能
运行这个场景,就会发现player节点会下落

在场景中鼠标左键按住,从右下往左上划,选中player中的所有结点,然后可以拖动改变位置

如果不想要这个功能了,可以删除rigidbody2d节点

在Godot中所有的操作都是基于节点的,节点就是功能,功能就是节点

2. Node节点

  • Node节点,是基类节点,所有节点都会继承Node节点,所以其它类型都包含Node节点的功能
  • Node节点是最核心的节点,所有其他类型节点都是由Node节点派生出来的

当新建一个场景的时候,会默认创建一个node2d节点
把它改变成node节点

1. Editor Description

在右边检查器里面,node节点第一个功能是可以往里面写描述,相当于注释
![[Pasted image 20240415143048.png]]

2. Script

node节点最主要的功能就是可以挂载脚本
![[Pasted image 20240415143142.png]]

Script的属性就是挂载脚本
![[Pasted image 20240415143217.png]]

左上角这里点击创建脚本,会自动挂载到node节点上
![[Pasted image 20240415143341.png]]

点击添加脚本
![[Pasted image 20240415143428.png]]

输入print("hello")
点击运行当前场景,发现控制台输出了一个hello
![[Pasted image 20240415143603.png]]

刚才添加的脚本会把脚本的属性赋值给Script
![[Pasted image 20240415143759.png]]

可以点击解除脚本
![[Pasted image 20240415143813.png]]

或者在右边的检查器node属性里面切换Script属性解除脚本
还可以将脚本拖到Script属性这里添加脚本
这些操作都可以实现
挂载好脚本以后,就可以在脚本里面写自己的逻辑
![[Pasted image 20240415144406.png]]

脚本基础函数介绍

_ready函数,脚本初始化会首先调用这个方法,会在_process()这个函数之前调用,就相当于main函数,一个初始化函数
_process函数,每一帧都会调用这个函数,因为游戏是一帧一帧渲染到屏幕上的,每渲染一帧都会自动调用这个函数,可以在这个函数里面写一些游戏逻辑,也就是写逻辑的时候主要用的函数
在这里定义了一个变量,每一帧就把这个变量加1
每60帧输出一个日志

extends Node

# 脚本初始化会首先调用这个方法,会在_process()方法之前调用
func _ready():
	# get_tree().paused = true
	print("hello")
	pass

var count = 0
# 每一帧都会调用这个方法
func _process(delta):
	count = count + 1
	
	if (count % 60 == 0):
		print("node")
	pass

运行这段代码
![[Pasted image 20240415144957.png]]

每60帧相当于大概1秒钟,可以观察到脚本的执行顺序
这两个函数是脚本最主要的函数,也是用的最多的函数

3. Process Mode

![[Pasted image 20240415145504.png]]

![[Pasted image 20240415145658.png]]

现在一共有三个node节点
在parentnode和childnode的脚本里面都添加上面的输出hello和node的代码
parentnode里输出parentnode,childnode里输出childnode
![[Pasted image 20240415150045.png]]

先默认运行
先会输出parent再输出child,也就是节点的process的执行顺序
因为parent节点是在最上面的,采用深度优先遍历的规则,就会先执行parent的process函数,执行结束以后,再执行child的process函数

当游戏暂停的时候会发生什么呢
先把child脚本的ready函数删除,保留parent节点的ready函数
不对mode进行改变
运行场景
![[Pasted image 20240415153035.png]]

parent先输出,child后输出

processmode主要是控制process函数
就是控制process函数在暂停的时候,是否去执行

  1. 现在child设置成inherit,parent设置成disabled
    get_tree().paused = true
    ready函数里的这条语句的意思是
    这条代码执行过后,就会把游戏暂停掉

节点的三种可能状态有:
1. Inherit(继承) :处理与否取决于父、祖父等等节点中第一个非 Inherit 状态的节点。
2. disabled(停止) :无条件停止节点(以及 Inherit 模式的子节点)。暂停时该节点不会进行处理。
3. always(处理) :无条件处理节点(以及 Inherit 模式的子节点)。无论暂停与否,该节点都会进行处理。

  1. parent选择disabled模式
    运行了ready里的停止游戏语句后
    不会运行process函数,控制台不会打印任何东西
    ![[Pasted image 20240415154214.png]]

选择always模式
控制台会继续先打印parent后打印child

  1. parent选择disabled,child选择always
    理论上只有子节点会输出日志
    ![[Pasted image 20240415154248.png]]

  2. parent选择always,child选择disabled
    这时只有父节点会输出日志
    ![[Pasted image 20240415154346.png]]

4. Process Priority

process函数执行的优先级,对于子节点依然有效
遍历的顺序可以通过process函数的优先级来改变
![[Pasted image 20240415154551.png]]

这个process priority
这个优先级是里面的数字越小,优先级越高
把parent的优先级调到100,child的优先级调成1
理论上是childnode先执行
![[Pasted image 20240415154733.png]]

对于同级节点依然生效

3.Godot节点编辑操作及类的继承关系 Godot当中所有的类,都有一个顶层节点:Object。 阅读详情

相关推荐

【Godot】动态的属性列表 示例

Godot 3.3.2 动态的属性列表 先看效果(注意右边的属性面板): 代码如下: tool extends Node2D var script_count = 0 setget set_script_count var __script_list = [] var __script_data = {} func set_script_count(value): # script_count 值跟上次相差多少 var diff = value - script_count # .

qq_37280924的博客 1893

GODOT游戏引擎简介,包含与unity性能对比测试,以及选型建议

godot游戏引擎简介,与unity引擎的2d/3d渲染性能测试,以及技术选型建议

失业求捞! 2万+

第一章-介绍

介绍一般建议什么是游戏引擎?什么是Godot?下载Godot其他安装方法Godot UI概述Project Manager选择文件名编辑器窗口关于节点和场景Godot中的脚本关于GDScript总结 无论你是想要从事的职业还是休闲爱好,游戏开发都是一项有趣而有意义的工作。现在是开始游戏开发的最佳时机。现代化的编程语言和工具使构建高质量的游戏并将其发布到全世界变得比以往任何时候都容易。如果你正在阅读本书,那么你已经踏上了制作梦想中的游戏的道路。 本书是对Godot游戏引擎及其2018年初发布的新3.0版本的介

游戏开发 2112

使用【Godot】做游戏前你必须知道的一些概念

Node是 Godot 中所有类的基类。Viewport和CanvasItem是两大分支:Viewport分支用于渲染管理和窗口控制。CanvasItem分支用于 2D 渲染和对象管理。具体的功能类(如)继承自Node2D或,提供了更具体的功能。# Game.gd信号是 Godot 中用于实现节点间通信的强大工具,它允许节点在特定事件发生时通知其他节点,而无需直接引用或硬编码连接。通过信号,开发者可以实现松耦合、灵活且事件驱动的游戏逻辑。

Octopus2077的博客 4965

Godot引擎开发:Godot基础入门_Godot引擎开发环境搭建

在开始使用Godot引擎开发动作游戏之前,首先需要搭建一个适合开发的环境。本节将详细介绍如何在不同的操作系统上安装Godot引擎,并设置一个基本的项目结构。通过这些步骤,你将能够顺利地启动Godot编辑器,并开始你的游戏开发之旅。

chenlz2007的博客 3411

Godot引擎开发:Godot基础入门_Godot引擎中的场景和节点

node.gd# 定义一个信号# 发送信号以下是一个使用进行自定义碰撞检测的示例。var enemy_layer = 1 # 假设敌人在第1层pass# 获取输入# 移动玩家# 检测与敌人的碰撞# 处理碰撞逻辑在Godot引擎中,场景和节点是构建游戏的基础概念。通过理解场景的类型、创建和管理方法,以及节点的类型、属性、关系、脚本、变换、动画和碰撞检测,可以有效地组织和开发游戏内容。希望本节的内容能帮助你更好地掌握Godot引擎的开发技巧。

chenlz2007的博客 1389

godot所有2D节点介绍

50个Godot Node2D节点介绍

watch361的博客 6549

节点:GODOT的构建块

目录 节点:GODOT的构建块 使用节点 场景 节点:GODOT的构建块 节点是在Godot中创建游戏的基本构建块。 节点是可以代表某种特殊游戏功能的对象。 给定类型的节点可能会显示图形,播放动画或表示对象的3D模型。 该节点还包含属性的集合,允许您自定义其行为。 您添加到项目中的哪些节点将取决于所需的功能。 这是一个模块化系统,旨在为您灵活地构建游戏对象。 使用节点 在编程的意义上,节点是对象。它们封装数据和行为,并且可以从其他节点继承属性。与其使用默认的建议,不如点击场景dock中的“添加

游戏开发 480

Godot游戏引擎节点简介

Godot4.3游戏引擎节点简介

weixin_43313121的博客 2875

Godot引擎开发:Godot基础入门_场景与节点系统

通过理解和应用Godot引擎中的场景和节点系统,我们可以构建出复杂且灵活的游戏结构。场景的创建和管理、节点的属性和方法、信号和通信机制,以及场景的继承和多继承功能,都是开发高质量游戏的重要工具。本节详细介绍了这些概念和技巧,并通过多个示例展示了如何在实际开发中使用它们。希望这些内容能够帮助你更好地掌握Godot引擎的核心功能,为你的游戏开发之路打下坚实的基础。

chenlz2007的博客 953

从‘裸纤’到成品:手把手拆解光纤阵列(FA)的装配、点胶与端面研磨全流程

本文详细拆解了光纤阵列(FA)从裸纤到成品的全流程,包括装配、点胶与端面研磨等关键工艺。通过实战经验和数据对比,揭示了5G基站、数据中心等场景中FA的精密制造要点与常见故障解决方案,为光通信器件生产提供专业指导。

weixin_42652674的博客 745

Godot Engine:Timer节点使用范例

Timer顾名思义,它就是个计时器

开发游戏的老王 7429

从零开始,用Cadence Virtuoso手把手仿真一个1.5V LDO(附完整电路与仿真脚本)

本文详细介绍了如何使用Cadence Virtuoso从零开始仿真一个1.5V LDO,包括环境准备、电路导入、Testbench构建、核心仿真类型分析以及高级调试技巧。通过完整的电路与仿真脚本,帮助读者掌握LDO设计与仿真的关键技术,提升电路设计能力。

weixin_31309419的博客 445

Godot 动态获取子节点的属性导出到父节点的面板上,并可以同步修改

Godot 3.2.3 GDScript 1.0 可以动态获取子节点的自定义的导出到面板中的变量,显示到当前的属性面板中,并可以同步修改,就是修改导出到这个节点的属性,也会修改对应子节点的这个属性 代码如下: """===================================================================== PropertyList ===========================================================.

qq_37280924的博客 2942

TDSQL-单机安装

根据腾讯云官方要求,TDSQL安装至少需要三台机器。本人想要学习TDSQL但是没有足够的机器资源,经过仔细分析研究TDSQL安装过程,尝试发现单台机器也可以成功安装TDSQL,现将本人单台机器安装TDSQL的过程以及安装过程中遇到的问题在此分享。具体安装过程可参考腾讯官方文档,本文仅分享与官方文档不一致的步骤。

u012607648的博客 6805

避开这些坑!医疗影像数据增强的6个安全操作指南(附PyTorch代码)

本文详细介绍了医疗影像数据增强的六大安全准则,包括解剖结构守恒、密度值物理意义保留和病灶特征保护等关键原则,并提供了PyTorch实战代码。通过具体案例和参数建议,帮助开发者在肺结节检测和MRI分割等医疗AI应用中实现安全有效的数据增强,避免因不当操作导致的诊断误差。

cola5的博客 555

Godot 节点

看视频做的笔记 2。

conan666666的博客 3355

开发simulink 以及stm32半物理仿真碰到的问题,以及处理方法,Error:External Mode Open Protocol Connect command failed(实测有用)

串口实现的,但是在测试的时候发现,这个串口可以正常发送和接收数据,但是一旦把这个串口只让其进行版物理仿真就报错。直接刷写程序是可以的,最后查到问题了。我要实现半物理仿真,就是通过matlab实现可以直接控制stm32板子,实际上是通过xcp on。然后点击simulink上的观测按钮就可以直接和stm32平台进行通讯了。3,还是使用串口3,但是重新需要设置一下com口,因为重新插拔了一下,按照这个设置方法就可以。2,重新加载ioc文件。

pvmsmfchcs的博客 1499

Godot基础教程02:全都是节点

在这里先劝退一波人:本教程只会涉及2D内容,不会涉及3D内容 创建节点 接上一章,在左侧的场景面板中,可以看到: 由于本教程只讲2D内容,所以这里我们应该选择2D场景: 可以看到,编辑器自动创建了一个名为Node2D的根节点。节点的概念将在稍后详细讲解。先点击面板上方的+按钮,弹出新建Node界面: 我们新建一个Sprite类型的节点,方法可以自选一个: 展开Node2D类型,在里面找到S...

Nazgul的博客 2341

华为OD机试 双机位C卷:微服务的集成测试 (C/C++/Py/Java/JS/Go)

华为OD机试 双机位C卷 :微服务的集成测试 ,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解。华为OD机试 微服务的集成测试 , 华为OD 微服务的集成测试

qq_45776114的博客 2066

PCIe协议之 Equalization篇 之 理论篇 之 FFE

作为最后一道“精加工”工序,DFE利用其不放大噪声的优势,精准地消除残余的、强烈的后光标ISI,最终得到一个非常干净、张得很开的眼图,供判决器使用。信号经过信道衰减后变得模糊,首先由CTLE进行“粗调”,提供一个宽频带的增益,将眼图初步打开,为后面的DFE创造一个可以正常工作的信号环境。,它通过将输入信号在不同时间点上的多个副本(称为“抽头”)进行加权求和,来直接塑造或“整形”输出信号的波形。:这是最主要的信号路径,通常系数为正值,决定了信号的幅度。:将所有加权后的信号相加,产生最终的均衡输出。

那么菜的博客 752

【Godot】保存当前场景中所有的子节点的属性

我使用 Godot 制作应用程序所用到的功能,对一些需要用到的属性进行保存。稍微修改也可以根据节点进行对一些游戏节点的数据的保存功能,思路都是一样的。 常量用于判断节点是否包含其中的属性,如果存在,则保存节点的这个属性的数据。注意下面 方法里的 做了只对 Control 进行保存的限制,删除即可对全部节点进行保存。 添加节点到场景中,默认节点都是没有任何内容的,运行后修改节点的属性,然后关闭再打开,即可看到节点存在了内容,对制作应用程序来说很方便。......

qq_37280924的博客 1286

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

6.GodotCanvasItem、Node2D及自定义节点

当发现现有的节点无法支持新的需求的时候,有两种方法去解决,自定义节点或者自定义脚本,核心都是脚本创建GdScrip脚本,叫MyNode,继承Node2D节点,并自定义节点的iconpass编写脚本,定义变量,编写代码保存,如果不保存无法看到我们创建到的节点,这一点需要特别注意添加刚刚创建的自定义节点有两个变量a和b就是刚才脚本里定义的变量输出my custom nodeclass_name 表示自定义节点的名称@icon 表示使用的icon。

ChoSeitaku的博客 2653

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

上一篇: 8.Hexo主题自定义layout布局文件夹
下一篇: 2.MMD关键帧及镜头自定义操作
ChoSeitaku
博客等级 码龄5年 3452粉丝 557原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值