Godot中文教程

举报
资源描述
.场景和节点场景和节点seraph526 在 星期三,10/14/2015-15:10 提交介绍介绍想像一个,你不再是一个游戏开发者,而是一名大厨!将时髦的衣服换成绒边帽和双排扣夹克.现在,你不做游戏,而是为你的客人烹饪新鲜美味的食物.现在,一位大厨如何烹饪食物?分为两道工序,首先是材料,其次是准备工序的介绍.这样,每个人都可以按照食谱制作,并品尝你伟大的料理.用 Godot做游戏和做菜的感觉非常像.使用引擎就像置身于厨房中.在这间厨房里,节点就像是装满了要烹饪的原材料的冰箱.有许多类型的节点,一些显示图片,另外一些播放声音,还有一些显示3D模型等等.有许多这样的节点节点节点让我们开始学习基础知识.节点是创建游戏的基本元素,它有以下几个特点:*要定义一个名字*有可编辑的属性*逐帧运行以接收 callback 调用*可以被继承(拥有更多的函数)*可以作为其他节点的子节点;.最后一点很重要.节点可以拥有其他节点作为子节点.当我们按这种方式组织节点,节点便成了tree.在 Godot 中,按这种方式管理节点的方式成就了一个伟大的管理项目的工具.因为不同的节点有不同的函数,组合他们会创建更复杂的节函数.这些可能你还不太清楚,没什么太深的理解.但是所有这些将来都会有所说明.现在最重要的是要记住,节点的存在,而且可以按上述的方式组织节点.场景场景既然已经定义了节点的存在,下一步便是说明什么是场景.场景由一组节点构成,这些节点被分级管理(以树的形式).它有以下的特征:一个场景通常只有一个root 节点*场景可以被保存到磁盘并加载加来*场景可以被 instanced*(后面会详细说明)*运行一个游戏也就是运行了一个场景*一个项目中可以有几个场景,但是要开始游戏,一定要先加载其中一个.基本上,Godot 编辑器就是一个场景编辑器.它有许多工具用来编辑 2D 和 3D场景以及用户界面,但所有的编辑器都是都是围绕编辑场景和节点展开的.创建新项目创建新项目;.理论是枯燥的.让我们改变主题,实践一下.跟随一个传统的教程,第一个工程将是helloworld.为此,将使用编辑器.当 Godot 在项目外运行时,工程管理器将会出现.它帮助开发者管理他们的项目.要创建一个新项目.要使用new Project选项.选择并创建项目路径和定义项目名称.编辑器编辑器新项目创建后,下一步就是打开它.这将打开 Godot 编辑器.下图是我们新打开时编辑器的样子.;.如前文所述,在 Godot 中制作游戏,就像置身于厨房.所以,让我们打开冰箱并填加一些新节点到场景中去.我们将以HelloWorld项目开始.按下新节点按扭:这将打开节点创建对话框,它显示了所能创建的节点的长度列表:;.这里,我们选择Label,搜索节点通常更快捷一些.最后,创建 Label!.当创建按扭被按下时,发生了很多事:;.首先,场景变为 2D 编辑器(因为 Label 是 2D 节点类型),Label 显示,被选中,在 viewport的左上角.节点出现在场景树编辑器中(在右上角),label 属性出现在 Inspector 面板中(在右下角).下一步,我们将改变 label 的Text属性,将其值改为Hello World:;.OK,所有的事都准备好了,可以运行场景了!点击顶部的PLAY SCENE按扭(或者按 F6):哎呀运行前场景要先保存,选择 Scene-Save,保存场景为helllo.scn一类的名字这里有一些有趣的事情.文件对话框比较特别,它允许保存场景到工程内部.工程的根目录是res:/,它就是资源路径.也就是说,文件只能保存到项目内部.将来,当在Godot中做文件操作时,记住res:/是资源路径,不管是什么平台或安装路径,这是从游戏内部定位资源的方法.在保存了场景并按下 run 之后,Hello World!最终正常运行了:;.成功了!配置项目配置项目好了,是时候对项目做一些配置了.现在,运行场景是唯一执行程序的方法.项目通常都有向个场景,所以要将它们中的一个设置为主场景.主场景将在项目运行时被第一个加载.这些设置都被存储在engine.cfg文件中,这是一个纯文本的win.ini格式的文件,以便可以方便的编辑.还有很多选项可以设置以声明项目如何运行,为了让设置变得简单,可以通过项目设置对话框设置 engine.cfg.要访问此对话框,可通过 Scene-Project Settings打开.窗口打开后,任务是设置一个主场景.我们可以很容易的改变 application/main_scene的属性,选择hello.scn为主场景;.修改后,点击regular Play按扭(或 F5)会运行项目,无论当前是哪个场景被编辑.返回项目设置对话框.这个对话框提供了很多可以填加到engine.cfg 的选项,这里显示了它们的默认值.如果默认值是正确的,我们不需要云改变它们.当值改变时,名字左侧的选择框会变为选中状态.这意味着这个值会被保存到 engine.cfg 文件中,会被项目记住所做的更改.这里是边注,为将来提供参考,有一些断章取义(毕竟,这只是第一篇教程).通过使用 Globalssingleton 可以填加自定义的设置选项,并且可以实时读取.实例化实例化seraph526 在 星期三,10/14/2015-15:27 提交基本原理基本原理有一个小型的场景,有些节点在场景中,可能有很多小的项目都可以正常工作,但当项目成长时,越来越多的节点被使用,它很快就会变得难以管理.为了解决这个问题,Godot 允许项目被划分为不同的场景.这和其他的一些游戏引擎的工作方式不一样.事实上,差别很大.所以请不要跳过这篇教程.重申一下:场景是节点的集合,按照 trew 的结构组织,只能有一个单独的节点做为这个树的根结点.在 Godot 中,场景可以创建并保存到磁盘上.任意场景都可以创建和并按你希望的形式保存.;.之后,当编辑一个存在的场景或新场景时,其他场景可以被初始化为此场景的一部分.上图中,场景B被加载并初始化为场景A中的一个实例,开始可能会觉得奇怪,但当看完这篇教程时会完全了解是什么回事.初始化初始化,Step by Step,Step by Step要学习如何初始化,让我们从下载一个pre-made souene.解压下载的场景到任意我们喜欢的路径下.然后,使用 import 选项加载到项目管理器定位到你的项目,打开engine.cfg文件.新的项目会出现在项目列表中.要管理这个项目,可以点击Edit选项.这个项目包含两个场景ball.scn和container.scn.ball场景只是;.一个带有物体属性的球,container 场景有一个很好的碰撞形状.球会被限制指定的区域中.;.打开 container 场景,选择根节点:之后,点击+按扭,这就是初始化按扭!;.选择 ball 场景(ball.scn),球会出现在 origin(0,0)位置,围绕场景中心移动 ball,如下:点击Play按扭,瞧!;.初始化的小球都落到底部的陷阱中多一些多一些场景中可以有任意多个初始化实例,试下创建更多的球,或者复制(ctrlD 或复制按扭):;.再一次运行场景:;.是不是很酷?这就是实例如何工作的.编辑实例编辑实例选中实例化的小球中的一个,打开属性编辑器.我们让它的弹力再大些,查看 bounce 参数,将其值设置为 1.0:接下来,会出现一个绿色的revert按扭,当这个按扭出现时,意味着我们编辑一个实例场景的属性,将重写这个实例为特别的值.甚至属性在原场景中编辑过.自定义的值将会重写它们.按下revert按扭将恢复场景中原来的值.结论结论实例化看起来很简单,实际上它还有很多功能,下一节实例化教程将会说明剩下的部分.实例化实例化(继续继续)seraph526 在 星期三,10/14/2015-16:06 提交;.概括概括实例化有很多方便的用法.一目了然,使用实例,你可以:*细分场景,使之易于管理.*更加灵活的方法替代 prefabs(可以工作在更多层级的功能更加强大的实例化).*设计更加复杂的游戏流程甚至是 UIs 的方法(UI 元素在 Godot 中也是节点).设计语言设计语言但是,实例化场景真正强大的点在于它像一门优秀的设计语言一样工作.这使得 Godot 完全不同于其他的游戏引擎.整个引擎从底层都是围绕这一概念设计的.用 Godot 制作游戏时,建议的方式是将其他的设计模式如MVC或 Entity-Relationship diagrams放到一边.以更加自然的方式开始制作游戏.开始设想游戏中的可视化元素,那些不光可以被程序员命名,也可以被任何人命名的游戏元素.如,这里是一个简单的射击类游戏的创意思路:任何类型的游戏都可以十分简单的想像出这样的图表.只要写下想法中的元素,然后用箭头标注所有权关系.这个图表存在后,制作游戏基本就成了为这些节点创建场景,使用实例化(通过代码,之后会介绍,或者通过编辑器)表示所有权关系编写游戏的大部分时间(或者一般的软件)都花在设计游戏模式并让游戏组件适应这一模式上.基于场景的设计取代了这些,使得开发更快更直接,允许直接关注游戏本身.基于场景/实例化的设计节省了大部分上述的工作,使工作变得十分有效率,因为大部分组件被直接映射成一个场景.这样,不再需要或只需很少的模式代码.下面是一个复杂点的例子,一个开放沙盒类型的游戏,其中有很多资源或部分是交互的:;.用家具搭建一些屋子,之后连接它们.制作一间房子,用这些房间作为这间房子的内部.这间房子可能是堡垒的一部分,堡垒有许多房子组成.最后,堡垒可以被放置到世界地图上.也要填加一些守卫和一些 NPCsg 到先前创建的场景中.使用 Godot,可以快速的按你所想实现游戏,因为只是多个场景的制作和初始化.编辑器 UI 也设计成无需程序员操作的模式,所以,通常一个游戏开发小组包括3D或 2D艺术家,关卡设计师,游戏设计师,动画师等等,都是通过编辑器界面工作.脚本脚本seraph526 在 星期三,10/14/2015-16:08 提交介绍介绍讲了许多关于不编辑就可以让用户制作游戏的工具.这是许多独立开发者的梦想,不学编程就可以制作游戏.这一需求已经存在了很长时间了,甚至是在公司内部,游戏设计者也希望更多的控制游戏的流程.许多产品被制作出来承诺无编辑环境,但是往往结果都是不完美的,太复杂或跟传统的代码比没有效率.结果,编辑在这里停滞了很长一段时间.事实上,游戏引擎中通常的做法是增加一些工具以减少为特殊任务重新编码的数量,加快开发的速度.在这个意义下,Godot 为了这个目标做了一些有用的决定策略.首先也是最重要的场景系统.开始,它的目的还不是很明确,但是后来工作的很好.那就是让程序员从架构设计的代码中解放出来.当使用场景系统设计游戏时,整个项目是碎片化的补充场景(不是各自独立的).各场景间相互补充,而不是各自独立.之后将会有大量的例子,但是要记住这非常重要.;.为此有大量的专业编辑知识,这意味着一个不同于 MVC 的设计模式.Gosot 允许放弃MVC 模式的一些效率损失,取而代之的是场景填充(scenes as a complement)设计模式Godot 脚本也使用 extend 模式,也就是说脚本可以继承自有可能的引擎类.GDScriptGDScriptGDScript(click link for reference)是动态类型脚本语言,以适应 Godot 引擎,设计它主要有以下几个目标:*第一个,也是最重要的,让它变得简单,熟悉,尽可能的易学.*使代码易读,让错误更安全.语法大部分是借鉴 Python.程序员通常要花几天去学习它,不超过两周就会适应它.像其他动态类型语言一样,高产出(代码易学,可快速编写,没有编译等等)是以平衡效率为代价的,但是引擎中大部分核心代码是用 C+编写的(Vector ops,phsics,math,indexing等等),对大部分类型的游戏来说保证足够的效率.任何情况下,如果要求更高的运行
展开阅读全文
温馨提示:
金锄头文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
相关搜索

当前位置:首页 > 资格认证/考试 > 其它考试类文档


电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号