Godot引擎 4.0 文档 - 循序渐进教程 - 节点和场景

news2024/11/28 2:28:51

本文为Google Translate英译中结果,DrGraph在此基础上加了一些校正。英文原版页面:

Nodes and Scenes — Godot Engine (stable) documentation in English

节点和场景¶

在Godot 关键概念概述中,我们看到 Godot 游戏是一棵场景树,每个场景都是一棵节点树。在本课中,我们将对它们进行更多解释。您还将创建您的第一个场景。

节点¶

节点是游戏的基本构建块。它们就像食谱中的配料。Godot中有几十种节点,它们可以用于显示图像、播放声音、代表相机等等。

所有节点都具有以下特征:

  • 一个名字。

  • 可编辑的属性。

  • 他们收到回调以更新每一帧。

  • 您可以使用新的属性和功能扩展它们。

  • 您可以将它们作为子节点添加到另一个节点。

最后一个特征很重要。节点一起形成一棵树,这是组织项目的强大功能。由于不同的节点具有不同的功能,将它们组合起来会产生更复杂的行为。

正如我们之前看到的,您可以构建相机跟随的可玩角色,使用一个名为“Character”的CharacterBody2D 节点,包括一个Sprite2D节点、一个Camera2D节点和一个CollisionShape2D节点。

场景¶

当你在树中组织节点时,就像我们的角色一样,我们称之为构建场景。保存后,场景就像编辑器中的新节点类型一样工作,您可以在其中将它们添加为现有节点的子节点。在这种情况下,场景的实例显示为隐藏其内部结构的单个节点。

场景允许您根据需要构建游戏代码。您可以 组合节点来创建自定义和复杂的节点类型,例如可以奔跑和跳跃的游戏角色、生命条、可以与之交互的箱子等等。

Godot 编辑器本质上是一个场景编辑器。它有很多用于编辑 2D 和 3D 场景的工具,以及用户界面。Godot 项目可以根据需要包含任意数量的这些场景。该引擎只需要一个作为您应用程序的主场景。这是当您或玩家运行游戏时 Godot 将首先加载的场景。

除了像节点一样,场景还具有以下特征:

  1. 它们总是有一个根节点,就像我们示例中的“角色”。

  2. 您可以将它们保存到本地驱动器并稍后加载它们。

  3. 您可以根据需要创建任意数量的场景实例。您的游戏中可以有五个或十个角色,这些角色是从您的角色场景中创建的。

创建你的第一个场景¶

让我们用一个节点创建我们的第一个场景。为此,您需要先创建一个新项目。打开项目后,您应该会看到一个空的编辑器。

在空场景中,左侧的场景停靠栏会显示多个用于快速添加根节点的选项。“2D Scene”添加一个Node2D节点,“3D Scene”添加一个Node3D节点,“User Interface”添加一个Control节点。这些预设在这里是为了方便;它们不是强制性的。“其他节点”允许您选择任何节点作为根节点。在空场景中,“其他节点”相当于按下场景栏左上角的“添加子节点”按钮,通常会添加一个新节点作为当前选中节点的子节点。

我们将向场景中添加一个标签(Label)节点。它的功能是在屏幕上绘制文字。

按“添加子节点”按钮或“其他节点”创建根节点。

“创建节点”对话框打开,显示一长串可用节点。

选择标签节点。您可以键入其名称以过滤列表。

单击 Label 节点将其选中,然后单击窗口底部的 Create 按钮。

添加场景的第一个节点时会发生很多事情。场景更改为 2D 工作区,因为 Label 是 2D 节点类型。Label 出现在视口的左上角并被选中。节点出现在左侧的场景停靠栏中,节点的属性出现在右侧的检查器(Inspector)停靠栏中。

更改节点的属性¶

下一步是更改标签的“文本”属性。让我们将其更改为“Hello World”。

前往视口右侧的 Inspector 停靠栏。在 Text 属性下方的字段内单击并键入“Hello World”。

在您键入时,您将看到在视口中绘制的文本。

参考:您可以像我们对文本所做的那样编辑检查器中列出的任何属性。有关 Inspector dock 的完整参考,请参阅 The Inspector。

您可以通过选择工具栏中的移动工具在视口中移动标签节点。

选择标签后,单击并拖动视口中的任意位置以将其移动到由矩形分隔的视图中心。

运行场景¶

一切准备就绪,可以运行场景了!按屏幕右上角的播放场景按钮或按F6(在 macOS 上Cmd + R)。

弹出窗口邀请您保存场景,这是运行它所必需的。单击文件浏览器中的保存按钮将其保存为“label.tscn”。

iy

注:将场景另存为对话框与编辑器中的其他文件对话框一样,只允许您在项目内保存文件。窗口顶部的res://路径代表项目的根目录下的“资源路径” 。有关 Godot 中文件路径的更多信息,请参阅文件系统。

该应用程序应在新窗口中打开并显示文本“Hello World”。

关闭窗口或按F8(在 macOS 上Cmd + .) 退出正在运行的场景。

设置主场景¶

为了运行我们的测试场景,我们使用了 Play Scene 按钮。它旁边的另一个按钮允许您设置和运行项目的主场景。您可以按F5 (在 macOS 上Cmd + B) 来执行此操作。

出现一个弹出窗口,请您选择主场景。

单击选择按钮,在出现的文件对话框中,双击 label.tscn.

演示应再次运行。往后,每次运行项目时,Godot 都会使用这个场景作为起点。

注:编辑器将主场景的路径保存在项目目录中的 project.godot 文件中。虽然您可以直接编辑此文本文件以更改项目设置,但您也可以使用“项目 -> 项目设置”窗口来执行此操作。有关详细信息,请参阅 项目设置。

在下一部分中,我们将讨论游戏和 Godot 中的另一个关键概念:创建场景实例。

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

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

相关文章

算法训练-二分查找

这里写目录标题 34. 在排序数组中查找元素的第一个和最后一个位置162. 寻找峰值153. 寻找旋转排序数组中的最小值33. 搜索旋转排序数组 34. 在排序数组中查找元素的第一个和最后一个位置 题目链接 vector<int> searchRange(vector<int>& nums, int target) {i…

集合 集合

目录 ArraryList 引用基本类型 案例1&#xff1a;定义一个集合添加学生姓名年龄 案例2&#xff1a;查看是否存在这个id 案例3&#xff1a;手机 案例4&#xff1a;学生管理系统&#xff08;不完整&#xff09; Collection collection遍历方式 迭代遍历&#xff08;不依赖…

深度学习用于医学预后-第二课第四周13-15节-使用生存数的非线性风险评估模型

使用生存数的非线性风险评估模型 在这堂课中&#xff0c;你将学习关于生存树的知识。你将学习如何将患者的变量纳入考虑&#xff0c;比较不同患者的风险。 你将看到生存树与二叉决策树相似&#xff0c;可以让你构建模型来捕捉患者数据中的非线性关系。 在这堂课中&#xff0…

分布式运用之rsync远程同步

1.rsync的相关知识 1.1 rsync简介 rsync&#xff08;Remote Sync&#xff0c;远程同步&#xff09;是一个开源的快速备份工具&#xff0c;可以在不同主机之间镜像同步整个目录树&#xff0c;支持增量备份&#xff0c;并保持链接和权限&#xff0c;且采用优化的同步算法&#…

怎么使用树莓派总要了解一点它的软硬件吧。什么模块有什么用,需要什么准备才能安全的看到树莓派的开机界面

Raspberry Pi(中文名为“树莓派”,简写为 RPi&#xff0c;(或者 RasPi / RPI)只有信用卡大小的微型电脑&#xff0c;其系统基于 Linux。随着 Windows 10 IoT 的发布&#xff0c;我们也将可以用上运行 Windows IoT 的树莓派。别看其外表“娇小”&#xff0c;内“心”却很强大&am…

Doxygen 源码分析: SymbolMap类

2023-05-21 10:59:35 ChrisZZ imzhuofoxmailcom Hompage https://github.com/zchrissirhcz 文章目录 1. Doxygen 版本2. SymbolMap 类概要3. 添加符号: SymbolMap<T>::add()4. 删除符号: SymbolMap<T>::remove()5. 符号查找: SymbolMap<T>::find()6. 哪里用了…

1.golang的介绍、环境安装和编译器安装

一、Go的介绍 Go语言其实是Golanguage的简称&#xff0c;Go&#xff08;又称 Golang&#xff09;是 Google 的 Robert Griesemer&#xff0c;Rob Pike 及 Ken Thompson 开发的一种静态强类型、编译并发型语言。Go 语言语法与 C 相近&#xff0c;但功能上有&#xff1a;内存安全…

Doxygen 源码分析: Definition类

2023-05-21 13:05:28 ChrisZZ imzhuofoxmailcom Hompage https://github.com/zchrissirhcz Blog https://blog.csdn.net/baiyu33 文章目录 1. Doxygen 版本2. Definition 类和它的8个子类3. Definition 类的 Private 成员4. Definition 类的 Public 成员4.1 特殊成员函数4.2 获…

(学习日记)AD学习 #1

写在前面&#xff1a; 由于时间的不足与学习的碎片化&#xff0c;写博客变得有些奢侈。 但是对于记录学习&#xff08;忘了以后能快速复习&#xff09;的渴望一天天变得强烈。 既然如此 不如以天为单位&#xff0c;以时间为顺序&#xff0c;仅仅将博客当做一个知识学习的目录&a…

Linux基本操作指令2

目录 指令1&#xff1a;rmdir指令&#xff1a; 指令2&#xff1a;rm命令&#xff1a; 指令3&#xff1a;man指令&#xff1a; 指令4&#xff1a;cp指令&#xff1a; 指令5&#xff1a;mv指令&#xff1a;类似于Windows的剪贴 指令6&#xff1a;cat指令 指令7&#xff1a;…

QT5.15.0使用gcc-arm-8.2-2018.08-x86_64-arm-linux-gnueabihf交叉编译的问题总结

目录 一、交叉编译 二、操作中踩过的坑 1、环境变量未生效 2、交叉编译QT代码操作 3、烧录时报错缺少xcb问题 4、小白的细小错误 三、--platform命令 3、1 -platform linuxfb 详细文档请点击此处 我的文档在原文档的基础上添加了非常详细的提醒&#xff0c;可以少走弯路…

软件性能测试过程详解与案例剖析

软件性能测试是软件开发过程中至关重要的一环&#xff0c;它能够帮助我们确保软件在不同负载和使用情况下的表现。在软件性能测试中&#xff0c;我们通常会关注软件的响应时间、吞吐量、并发用户数等指标&#xff0c;以评估软件性能。 软件性能测试过程主要分为以下几个步骤&am…

leetcode:322. 零钱兑换(暴力dfs,记忆化dfs,动态规划(朴素+优化),bfs+贪心)

记录常规的完全背包问题模型 1.暴力dfs2.优化dfs&#xff0c;记忆化dfs3.动态规划4.bfs 1.由于每件物品可以无限取&#xff0c;那么可以发现这是一个完全背包问题模型。 1.暴力dfs 最后要求的是&#xff1a;n种硬币&#xff0c;凑成总金额为amount。每种硬币无限取&#xff0…

Java8 教你一行代码搞定:如何计算map中value值

大家好&#xff0c;我是三叔&#xff0c;很高兴这期又和大家见面了&#xff0c;一个奋斗在互联网的打工人。 这期给大家讲一下在Java编程中&#xff0c;如何使用Java8对map的值进行计算&#xff0c;在实际开发中&#xff0c;也是经常遇到统计map中的value值之和。 Map是一种常…

Web安全:文件上传漏洞测试.

Web安全&#xff1a;文件上传漏洞测试. 现在大多的网站和Web应用系统都会有上传功能&#xff08;比如&#xff1a;文档&#xff0c;图片&#xff0c;头像&#xff0c;视频上传等.&#xff09;&#xff0c;而程序员在开发文件上传功能时&#xff0c;没有对代码做严格校验上传文…

解决大文件传输难题的方法和技巧

传统的传输大文件的方式&#xff0c;如电子邮件附件或USB驱动器&#xff0c;由于文件大小的限制和安全问题&#xff0c;变得越来越不方便。大文件共享是现代商业通信的一个重要方面&#xff0c;组织需要安全可靠的方式来传输这些文件。 传统文件传输方式的不便 传统的文件传输方…

LabVIEWCompactRIO 开发指南27 创建模块化、可重复使用的子VI

LabVIEWCompactRIO 开发指南27 创建模块化、可重复使用的子VI 编写模块化代码几乎总是一个好主意&#xff0c;无论是为Windows、实时还是FPGA设备设计应用程序。子VI使代码更易于调试和故障排除&#xff0c;更易于记录和跟踪更改&#xff0c;并且通常更清晰&#xff0c;更易于…

一文读懂JVM架构解析

JVM 架构解析 Java 架构JVMJVM是如何工作的&#xff1f;类加载器子系统 运行时数据区执行引擎 每个 Java 开发人员都知道字节码经由 JRE&#xff08;Java运行时环境&#xff09;执行。但他们或许不知道 JRE 其实是由 Java虚拟机&#xff08;JVM&#xff09;实现&#xff0c;JVM…

css3 flex弹性布局学习

一、flex基本概念 当开启flex布局后&#xff0c;项目默认沿主轴排列。单个项目占据的主轴空间叫做main size&#xff0c;占据的交叉轴空间叫做cross size。 二、容器的属性 以下6个属性设置在容器上。 flex-direction flex-wrap flex-flow justify-content align-items align…

LabVIEWCompactRIO 开发指南26 同步循环

LabVIEWCompactRIO 开发指南26 同步循环 对于大多数控制和监视应用&#xff0c;代码执行的时间对于系统的性能和可靠性非常重要。在此电机控制示例中&#xff0c;有两个不同的时钟信号&#xff1a;采样时钟和PID时钟。这些是在应用程序中生成的布尔信号&#xff0c;用于在循环…