Godot开发与学习
Godot开发思想
- 节点的特征与优势
- 节点使Godot内最常用最基本的开发组件
- 大部分节点都具有非常具体的功能,它们往往直接涉及人类的视听感官,如显示图片、播放音乐、显示模型、模拟物理体等
- 节点之间可以用上下级的方式组合,一个节点可以有多个子节点
- 节点的开发思想与人类相接近
- 场景树与服务器控制节点运行(节点实在场景树与服务器的控制下运行的)
- 场景树是游戏的主循环对象,只有在“树”下的节点才可以正常行使节点的主要功能。(节点初始化时并不在“树”下)
- “服务器”指的是Godot内置的各类Server,节点的主要功能都要使用Server实现,节点本身不具备实际功能。二者通过场景树进行协调沟通
- “服务器”的编码比较接近底层,保障了游戏运行的效率。节点的设计思路比较接近人类,加速了游戏开发者开发游戏的效率。场景树起到了协调二者的作用
- 节点的组织方式————场景
- 场景是若干节点的集合
- 场景文件时记录若干节点集合的文件
- 游戏实际运行时不存在“场景”,场景是节点在文件系统中储存和加载的单位
- 游戏从主场景开始运行
- Godot软件的界面介绍————围绕节点
- 1 场景栏:显示场景内节点,可以在这里增删一个场景内的节点(还可以在这里为节点附加脚本)
- 2 文件系统:显示场景文件与游戏素材文件
- 3 视图区;预览场景内的可视节点(编写代码与查看素材库)
- 4 检查器:查看节点的属性(显示节点的信号连接,节点组情况与游戏素材文件属性)
GD Script语言————Godot的原生脚本语言
- GD Script入门介绍
- GD Script是Godot的原生脚本语言,是最适合Godot开发的脚本语言
- 在入门阶段,我们只需要知道GD Script可以为节点拓展功能即可
- GD Script与节点的关系
- 节点对电脑而言具有非常具体的功能,可以令游戏程序执行显示图片、播放音频、模拟物理体等功能,但也仅限于此
- 游戏出来上述的具体功能外,往往还需要具有一套内在的逻辑。就像我们现实中下的象棋,棋子本身只是普通的木头和石头,只是能让我们看得见“象棋”,而要让这些木头和石头能勾起人的兴趣,我们还要制定一套象棋的规则,规定这些棋子在何种情况下如何行走
- GDS负责实现内在逻辑,同时控制节点展示具体的功能。比如一个角色被一个怪物攻击掉血死亡的功能,出来要在GDS中进行角色生命值的削减和角色存活的判断,还要在判断角色死亡后控制节点播放死亡动画和音效
GD Script语言入门————变量
- 变量的概念与简单操作
- 变量是可以代表数据的一种抽象概念,可以通过对变量名的操作来对变量代表的数据进行操作
- 在GDS中,你可以创建自定义的变量,也可以使用系统内置的变量
- 变量可以进行计算与转换
- 即使是同一脚本文件,绑定不同的对象从而产生了同名的变量,这两个变量以及变量代表的数据也分别属于不同的对象,互相独立,因此使用变量前必须指明变量所属的对象
- 四种基本数据类型
- 布尔类型(bool):true和false
- 整数类型(int):-1,0,1,2,3,4,5,6,7,8,9
- 浮点数类型(float):-1.0,0.0,1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0
- 字符串类型(String):”Hello World”,”123”,”true”,”false”,”1.0”,”2.0”,”3.0”,”4.0”,”5.0”,”6.0”,”7.0”,”8.0”,”9.0”
- 由四种基本变了组成的其他值类型变量
- 值变量:执行 变量A = 变量B 时,变量A的值会被变量B的值所替换,对于A的修改不会影响B的值
- 引用变量:执行 变量A = 变量B 时,变量A的值会被变量B的值所替换,对于A的修改会影响B的值
- 大部分变量都是值变量
- 二维向量变量:由两个浮点数组成的向量,用Vector2表示,如Vector2(1.0, 2.0)
- 变量的作用
- 变量除定义的过程外,必须在函数内进行数值的修改,内置代码中的许多变量在修改后,会直接对一下内容产生实质性的影响。而自定义的变量则不会。因此,可以用自定义的变量来定义逻辑上的影响数据,而后通过判断逻辑上的数据情况来调整内置代码中的变量,对一下的画面、音效等产生实际的影响
GD Script语言入门————函数
- 函数的概念
- 函数也叫方法或模块,是一套操作的集合。函数也包括自定义函数与内置函数
- 大部分内置函数可以对游戏内容产生实质性的影响或在代码中起到传递数据的作用,少部分函数比较特殊
- 一个函数除名称外,还包括了【输入信息、处理流程、处理结果】等关键信息。在程序中,一切数据的处理都是通过函数来实现的
- 函数调用一般必须指明调用对象
- 内置函数的调用
- 虚函数是指没有实际处理流程的函数,这部分函数的内容可以由开发者自行编写。而内置虚函数则是指开发者规定了特定名称却没有实际处理流程的函数,节点内的虚函数会在特定的条件下自动被触发
- 条件1:当节点本身或其周围节点状态发送改变时。【节点创建、节点入“树”、节点出“树”、节点死亡前、节点的子节点全部加入场景树】
- 条件2:当场景树的状态发送改变时,且节点自身处于“树”中。【画面刷新、物理引擎刷新、硬件设备输入】
- 条件3:当节点的属性发生改变时。【节点属性改变、节点的子节点改变】
- 条件4:当节点的信号连接发生改变时。【节点的信号连接改变】
- 条件5:当节点的子节点发生改变时。【节点的子节点改变】
- 常用虚函数:
- _ready():节点创建后自动调用
- _process(delta):节点处于“树”中时自动调用
- _physics_process(delta):物理引擎刷新时自动调用
- 函数中的变量
- 函数中也可以定义变量,各个函数都拥有一个独立的作用域,在一个函数内部定义的变量无法再另一个函数中直接访问变量名
- 子啊函数运行结束后变量和变量所代表的数据会自动销毁。某些情况下,变量所代表的数据不会自动销毁,但变量一定会自动销毁