[译]Godot系列教程一 - 场景与节点
场景(Scene)与节点(Node)
简介

先设想有那么一瞬间你自己不再是一名游戏开发者了,而是一名大厨!
你的装备换成了一套大厨的制服。不要考虑制作游戏的事情,你现在的职责是为你的顾客创建新的可口的食谱。
那么,大厨是怎样创建食谱的呢?食谱分为两部分:首先是食材;然后是工序。这样,任何人都可以根据食谱烹调并品尝到你华丽的创作。
Godot中制作游戏与这个过程非常相似。Godot引擎就像一个厨房,在这个厨房里,节点就像装满新鲜食材的冰箱。
节点有很多种类型,显示图片的、播放声音的、显示三维模型的,等等。总共有几十个。
节点
让我们从基础谈起。节点是创建游戏的最基础的元素,它具有以下一些特征:
- 名称
- 可编辑的属性
- 能接收回调,以便处理每帧(Frame)相关效果
- 可以被扩展,以便拥有更多功能
- 可以被添加为其它节点的子节点

最后一点非常重要:节点能让其它节点作为子节点。这样组合出来,就变成了我们常说的树状。
Godot中这种树状组织能力创建了一种强大的项目管理工具。由于不同的节点有不同的功能,通过组合它们就足以创建更复杂的功能。
这样讲你肯定还没有什么感觉,但Godot所有的知识点都与上面这些特征有关,你现在只要记住有节点这么个概念,并且节点能按树状组合就好了。
场景

有了节点的概念后,下一步就是要给你解释什么是场景了。
场景就是由一组按树状层级结构组织的节点组成。它有下列属性:
- 一个场景只有一个根节点
- 场景可以被保存到硬盘上并被加载回来
- 场景可被实例化 (稍后会有更多描述)
- 运行一款游戏意味着在运行一个场景
- 一个项目中可以有多个场景,但启动时必须指定其中一个用于初始加载的场景
Godot编辑器其实就是一个场景编辑器。它有丰富的用于编辑二维和三维场景的相关工具,这些工具都是围绕编辑节点和场景的概念的。
创建项目
光讲理论很无聊了吧,那让我们来点实践性的:用编辑器来做个“Hello world”。
当没有启动具体项目时,Godot会打开项目管理器,用于帮助开发者管理项目。

点"New Project"创建新项目,这个时候需要选择项目路径并指定项目名称:

编辑器
创建好新项目后,下一步就是打开它,这样就启动了Godot编辑器。编辑器的效果大致是这样:

上面提过,在Godot中制作游戏就像到了厨房,先打开冰箱,然后添加一些新鲜的节点到项目中。让我们开始“Hello World”吧,点击"New Node"按钮:

打开“Create Node”对话框,界面显示了一长列可用节点吧:

先选择“Label”节点,可以在上方快速搜索:

最后,创建标签!“Create”按钮被点击后,会发生很多事情:

首先,场景变成2D编辑器,因为Label是个二维节点,Label会出现Viewpoint左上角、被选中状态。
同时,该节点出现在Scene树编辑器,标签属性则出现在Inspector。
下面,我们来修改该标签的“Text”属性,改成"Hello, World!":

好了,这样就可以运行场景了!点击顶部栏的播放场景的按钮或按F6:

哎呀...

提示场景需要保存了才能运行;保存场景,文件名比如叫做 hello.scn:

该场景只允许保存在该项目中。项目的根 "res://" 代表资源路径。
保存场景后再点“运行场景”,“Hello, World!”这个demo应该就开始执行了:

搞定!
.. _doc_scenes_and_nodes-configuring_the_project:
配置项目
项目中,如果有多个场景,必须指定一个主场景 - 在运行时初始被载入的。
这些设置都被保存在engine.cfg中,这是一种win.ini这样的纯文本格式,编辑起来很简单。因为项目设置项很多,所以可以通过“项目设置”对话框来直观操作。
通过菜单Scene -> Project Settings可以访问该对话框。
该窗口被打开时,要选择主场景,很简单,切换到application/main_scene属性,选择'hello.scn'即可。

完成设置后,点“运行按钮”或F5键会开始运行该项目。
再打开项目设置对话框,其中显示了很多可用选项及默认值。如果默认值没问题的话就不需要动它。
当其中一项值被改动,其名称左侧会出现一个标记,代表该值将会保存到engine.cfg文件中。
其实还可以添加自定义配置选项并在运行时被读入
:ref:Globals <class_Globals> 单例对象中.
未完待续...
下一节会涉及多个场景及多个节点!
原文:http://docs.godotengine.org/en/latest/tutorials/step_by_step/scenes_and_nodes.html
[译]Godot系列教程一 - 场景与节点的更多相关文章
- [译]Godot系列教程三 - 场景实例化(续)
场景实例化(续) 要点 场景实例化带来很多便利的用法,总体来说有: 将场景细分,更便于管理 相对于某些引擎中的Prefab组件更灵活,并且在许多方面更强大 是一种设计更复杂的游戏流程甚至UI的方式 这 ...
- [译]Godot系列教程二 - 场景实例化(Instancing)
场景实例化(Instancing) 原理阐述 创建一个场景并将节点扔到里面对于小项目是适用的,但随着项目不断发展,用到越来越多的节点,整个项目很快就会演化成难以管理的状态. 为了解决这个问题,Godo ...
- [译]Godot系列教程五 - 制作Godot编辑器插件
制作插件 下文仅针对2.1版本. 关于插件 插件是为编辑器扩展出更多有用工具的重要方式.它可以完全用GDScript和标准场景开发,甚至都不需重新加载编辑器就可生效.不像模块,你无需创建C++代码.也 ...
- [译]Godot系列教程四 - 编写脚本
编写脚本(Scripting) 简介 关于无需编程即可创建视频游戏的那些工具的谈论有很多.不用学习编程知识对很多独立开发者来说就是一个梦想.这种需求 - 游戏开发者.甚至在很多公司内部,希望对游戏流程 ...
- [译]Godot系列教程六 - 简单的二维游戏
Pong Godot自带的Demo中有大量更复杂的示例,但这款叫"Pong"的游戏可以对2D游戏的基本特性做一个介绍. 静态资源 本文所用到的一些资源文件:http://files ...
- HTML5游戏开发系列教程7(译)
原文地址:http://www.script-tutorials.com/html5-game-development-lesson-7/ 今天我们将完成我们第一个完整的游戏--打砖块.这次教程中,将 ...
- HTML5游戏开发系列教程6(译)
原文地址:http://www.script-tutorials.com/html5-game-development-lesson-6/ 这是我们最新一篇HTML5游戏开发系列文章.我们将继续使用c ...
- HTML5游戏开发系列教程5(译)
原文地址:http://www.script-tutorials.com/html5-game-development-lesson-5/ 最终我决定准备下一篇游戏开发系列的文章,我们将继续使用can ...
- HTML5游戏开发系列教程4(译)
原文地址:http://www.script-tutorials.com/html5-game-development-lesson-4/ 这篇文章是我们继续使用canvas来进行HTML5游戏开发系 ...
随机推荐
- Google分布式构建软件之二:构建系统如何工作
分布式软件构建第二部分:构建系统如何工作 注:本文英文原文在google开发者工具组的博客上[需要FQ],以下是我的翻译,欢迎转载,但请尊重作者版权,注名原文地址. 上篇文章中提到了在Google,所 ...
- ASP.NET MVC 控制器激活(二)
ASP.NET MVC 控制器激活(二) 前言 在之前的篇幅中,用文字和图像来表示了控制器的激活过程,描述的角度都是从框架默认实现的角度去进行描述的,这样也使得大家都可以清楚的知道激活的过程以及其中涉 ...
- eCharts动态加载各省份的数据
假如从数据库读出以下数据,如何将数据展示在地图之上 1.部门的名称数据: List deptname=[联通事业部-上海联通项目组, 联通事业部-河南联通项目组, 联通事业部-贵州联通项目组, 联通事 ...
- javascript 闭包
闭包,是 javascript 中重要的一个概念,对于初学者来讲,闭包是一个特别抽象的概念,特别是ECMA规范给的定义,如果没有实战经验,你很难从定义去理解它.因此,本文不会对闭包的概念进行大篇幅描述 ...
- Codeforces Round #323 (Div. 2) C.GCD Table
C. GCD Table The GCD table G of size n × n for an array of positive integers a of length n is define ...
- AngularJS之WebAPi上传(十)
前言 前面一系列我们纯粹是讲AngularJS,在讲一门知识时我们应该结合之前所学综合起来来做一个小的例子,前面我们讲了在MVC中上传文件的例子,在本节我们讲讲如何利用AngularJS在WebAPi ...
- Web APi之控制器选择Action方法过程(九)
前言 前面我们叙述了关于控制器创建的详细过程,在前面完成了对控制器的激活之后,就是根据控制器信息来查找匹配的Action方法,这就是本节要讲的内容.当请求过来时首先经过宿主处理管道然后进入Web AP ...
- 有意思的Python:开发和部署一览
我觉得在有时间的条件下,学习不同的开发语言,对于保持对技术的理解是有帮助的. Python是一门这样简单而且有趣的语言.网上资料已经比较多了.我这里主要对开发和部署环境所涉及的几个工具做些介绍. 1. ...
- Markdown 语法整理
Markdown 语法整理 白宁超 2015年7月24日14:57:49 一.字体设置 A First Level Header == A Second Level Header -- # 标题 ## ...
- (八)WebGIS中栅格图层的设计
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1. 前言 我们在上一章里了解到WebGIS中栅格图层的本质—— ...