场景与节点

简介

../../_images/chef.png

试想一下您不再是一个游戏开发者.相反地,您是一位厨师!把您时髦的着装换成无檐帽和双排扣夹克.现在,您是在为您的客人打造一个美味的菜谱而不是在做游戏.

那么,厨师如何制作菜谱呢?菜谱分为两个部分:第一部分是成分,第二部分是准备它的说明.这样,任何人都可以按照菜谱来品味你的宏伟创作.

在Godot中制作游戏感觉和这种方式相同.使用这个引擎感觉就像是在一个厨房里.在这个厨房里,*节点* 就是装满了用于烹饪的新鲜材料的冰箱.

有很多种类型的节点,有的显示图像、有的播放声音、有的节点显示3D模型等等.它们有数十个.

节点

但让我们从基础开始.节点是创建游戏的基本构建块.如上所述,一个节点可以执行各种特定的功能.但是,任何给定节点始终具有以下属性:

  • 拥有名称.

  • 具有可编辑的属性.

  • 可以接收回调以处理每个帧.

  • 可以被扩展(以具有更多功能).

  • 可以作为子节点被添加到其他节点上.

../../_images/tree.png

最后一点很重要.节点能够持有其他节点作为子节点.以这种方式编排时,这些节点就会变成一棵 .

在Godot中,以这种方式来编排节点的特点为组织项目创造了一个强有力的工具.因为不同的节点有不同的功能,将它们组合起来则允许创建更多复杂的功能.

如果现在没有领悟它,不要担心.我们会再接下来几节里继续探讨.目前要记住最重要的一点是:有节点这个东西存在,并且能够按这种方式来编排.

场景

../../_images/scene_tree_example.png

既然现在已经定义了节点的概念,那么下一个合逻辑的步骤就是解释场景是什么了.

一个场景是由一组分层组织(以树形方式)的节点组成.此外,一个场景:

  • 始终有一个根节点.

  • 能够被保存到磁盘上,也能被载入回来.

  • 能够被 实例化 (稍后详细说明).

运行一个游戏意味着运行一个场景.一个项目可以有多个场景,但是为了游戏的启动,必须有一个作为主场景.

本质上,Godot编辑器就是一个 场景编辑器 .它有很多用于编辑2D和3D场景以及用户界面的工具,但是编辑器是基于编辑场景及构成场景的节点的概念的.

编辑器

打开您在 :ref:`doc_intro_to_the_editor_interface`中创建的项目,或创建一个新项目.这将打开Godot编辑器:

../../_images/empty_editor.png

正如前面提到的,在Godot做游戏感觉就像在厨房,所以让我们打开冰箱,为项目添加一些新的节点.我们将以在屏幕上显示”Hello World”消息开始.

为此,我们需要添加 Label(标签)节点.点击场景面板左上角的”添加子节点”按钮(加号图标).这是往场景中添加新节点的主要方式,会把新建的节点加到当前所选节点下,成为其子节点(如果是空场景,新建节点则会成为根节点).

注解

在(没有根节点的)空场景中,场景面板会显示一些快速添加根节点的选项.”2D 场景”会添加 Node2D 节点,”3D 场景”会添加 Spatial 节点,”用户界面”会添加 Control 节点,”自定义节点”则会让你自己选择节点类型(和点击”添加子节点”按钮的效果是一致的).点击星形按钮可以切换是否显示收藏的节点.

此处的预设仅仅是为了方便,而不是对各类场景的强制要求.不是所有的 3D 场景都要以 Spatial 节点为根节点,同样,GUI 和 2D 场景的根节点也不一定要是 Control 节点和 Node2D 节点.

所以,往这个场景里添加标签节点的话,无论是点击自定义节点按钮,还是点击顶部的添加节点按钮都可以.而如果是往非空场景里添加子节点,就得使用添加节点按钮.

../../_images/newnode_button.png

这将会打开创建节点对话框,展示了一长串能够被创建的节点列表:

../../_images/node_classes.png

在这里,先选择 “Label” 节点.直接搜索它可能是最快捷的方式:

../../_images/node_search_label.png

最终,创建了一个标签!当创建按钮被按下时,很多事情就发生了:

../../_images/editor_with_label.png

首先,场景更改为2D编辑器(因为标签是一个2D节点类型),并且标签出现在视图的左上角,处于选中状态.

该节点出现在场景树编辑面板中,标签的属性出现在检查器面板中.

下一步就是去改变标签的 “Text” 属性了,我们来把它改成”Hello,World!”:

../../_images/hw.png

好了,一切都已准备就绪,可以来运行场景了!在顶栏按下 PLAY SCENE按钮(或按 F6 ):

../../_images/playscene.png

然后……哎呀.

../../_images/neversaved.png

场景需要被保存才能被运行,所以在 场景(Scene) ‣ 保存菜单(Save) 中将场景保存成文件如Hello.tscn:

../../_images/save_scene.png

然后,有趣的事情发生了.这个文件对话框是一个特别的文件对话框,只允许保存在项目内.项目根目录是 res://,意为”资源路径”(resource path).这也就意味着,文件只可以被保存到项目的内部.以后,当在Godot进行文件操作的时候,记住 res:// 就是资源的路径,无论哪种平台和安装位置,它都是定位游戏内部的资源文件位置的方式.

在保存场景并再一次按下运行场景之后,”Hello World”演示示例应该最终被执行了:

../../_images/helloworld.png

成功!

注解

如果这不能立即生效,而且你至少有一台显示器上有高DPI显示,请进入 Project → Project Settings → Display → Window ,然后在 Dpi 下启用 Allow Hidpi .

配置项目

好了,是时候配置项目了.现在,唯一运行某些东西的方式就是执行当前的场景.然而,可能有多个场景,因此其中一个必须被设定为主场景.这个场景是将会在项目运行时被载入的场景.

这些设置将全部被存放在 project.godot 文件中,一个 win.ini 格式的普通文本文件(以便编辑).在这个文件中有数十个设置可以被修改,来更改项目的执行方式.为了简化此过程,Godot提供了项目设置对话框,作为编辑 project.godot 文件的前端.

要访问这个对话框,选择 项目(Project) -> 项目设置(Project Settings).现在就试试吧.

窗口打开后,让我们选择一个主场景.定位到 应用程序(Application) ‣ 运行(Run) ‣ 主场景(Main Scene) 属性然后点击以选择 Hello.tscn.

../../_images/main_scene.png

现在,通过此更改,当您按常规播放按钮(或 F5)时,无论正在编辑哪个场景,该场景都将运行.

项目设置对话框提供了许多能够被保存至 project.godot 文件的选项并且显示出了它们的默认值.当您改变了一个值,一个对勾被标记在属性名的左侧.这意味着这个属性将被保存到 project.godot 文件中并被记住.

另外,还可以使用 ProjectSettings 单例在运行时来添加自定义配置选项,并读取它们.

未完待续…

这篇教程谈论了”场景和节点”,但是目前为止,还只有 一个 场景和 一个 节点!别担心,下一篇教程将会展开讨论…