登录 用户中心() [退出] 后台管理 注册
   
您的位置: 首页 >> CLQ工作室开源代码 >> 主题: [gdscript]godot 自己开发脚本语言的原因     [回主站]     [分站链接]
标题
[gdscript]godot 自己开发脚本语言的原因
clq
浏览(70) + 2024-07-28 12:06:43 发表 编辑

关键字:

[2024-07-28 12:16:04 最后更新]
[gdscript]godot 自己开发脚本语言的原因

本来我对 gdscript 是滍之以鼻的,不过看了下面这篇文章后有所改观。


--------------------------------------------------------

godot开发基础知识03:GDScript脚本语言简介【zt】

godot开发基础知识03:GDScript脚本语言简介
李维民
李维民
已婚苦手玩家,不坚定佛教徒,半吊子游戏开发者
10 人赞同了该文章

目录
收起
3.1 为什么是GDScript而不是其他的语言?
3.2 创建 GDScript 背后的动机是什么?¶
3.3 GDScript的基本语法
3.3.1 变量和数据类型
3.3.2 流程控制语句
3.3.3 函数
3.3.4 类
3.5 GDScript中的注解Annotations
3.6 编程示例
3.7本章小结

godot开发基础知识03:GDScript脚本语言简介

最近老李家里出了点情况,一直在解决家里问题。后续会陆续将godot基础知识相关文章同步发表在知乎和个人微信公众号,如果大家想看老李分享的最新最全的游戏开发、游戏设计相关内容,欢迎加入老李的知识星球,在知识星球搜索:老李游戏学院。
3.1 为什么是GDScript而不是其他的语言?

godot官方提供了4中开发语言可供开发者选择:

GDScript 原生支持的开发脚本语言,语法简单,与引擎结合更好;
C# 为扩展开发者群体,以及相应微软的投资而支持的脚本开发语言,在godot4中对C#的支持得到了提升;
C/C++ godot本身是使用C++开发且开源,并通过GDExtension技术支持社区开发其他编程语言;
GDExtension技术支持的社区维护的开发语言,比如ruby、lua和JavaScript等;

这里老李着重比较C#和GDScript之间的差异,供给godot新人判断选择:

GDScript: Godot专用的编程语言,设计简洁、学习曲线低、与Godot引擎紧密集成,非常适合新手和独立开发者。

C#: 一种通用的、强类型的编程语言,功能强大,适合有一定编程经验的开发者,特别是那些有.NET背景的开发者。但值得一提的是,godot对于C#的支持并不十分让人满意,社区已经有开发者开始提议,能否采用GDExtension 重新实现对C#的支持。 本系列课程我们将采用GDScript脚本进行开发,原因很多,最主要的原因是GDScript 确实能够节省开发者的时间,这一点对于独立游戏开发者尤其重要,毕竟我们还有很多其他的事情需要处理。

GDScript的特点包括:

简单的语法可以生成短文件。
编译和加载时间极快。
紧密的编辑器集成,具有节点、信号及其所附加场景的更多信息的代码完成功能。
内置向量和变换类型,使其能够高效地大量使用游戏必需的线性代数。
像静态类型语言一样高效地支持多线程。
没有垃圾收集,因为此功能最终会妨碍创建游戏。默认情况下,引擎会计算引用数并为您管理内存,但如果需要,您也可以控制内存。
渐进类型。默认情况下,变量具有动态类型,但您也可以使用类型提示进行强类型检查。

当您使用缩进构建代码块时,GDScript 看起来像 Python,但在实践中它的工作方式并不相同。它的灵感来自多种语言,包括 Squirrel、Lua 和 Python。


面向对象编程 (Object-Oriented Programming, OOP):
面向对象编程是一种编程范式,它通过将现实世界的对象抽象为程序中的“类”和“对象”来组织代码。在这种编程范式中,对象具有属性(即对象的特征)和方法(即对象能做什么)。
类比:想象一下,我们生活中的每个物品都是一个对象,比如汽车。每辆汽车都有一些属性(如品牌、颜色、速度)和方法(如驾驶、加速、刹车)。在面向对象编程中,我们可以创建一个“汽车”类来代表所有汽车的通用特性和行为。

class Car:
var brand
var color
var speed
func drive():
print("Driving at ", speed, " km/h")

命令式编程 (Imperative Programming):
命令式编程是一种更为传统的编程范式,它通过编写一系列的命令来告诉计算机如何执行特定的任务。这些命令是按照特定的顺序执行的,每个命令都会改变程序的状态。
类比:想象一下,我们正在按照食谱做饭。食谱上列出了一系列的步骤,我们按照这些步骤一步步地完成烹饪。每个步骤都是一个命令,例如“切菜”、“煮水”等。

func cook_dinner():
chop_vegetables()
boil_water()
cook_rice()
fry_vegetables()

3.2 创建 GDScript 背后的动机是什么?¶

早期,该引擎使用Lua脚本语言。由于 LuaJIT,Lua 可以很快,但是创建到面向对象系统的绑定(通过使用后备)是复杂而缓慢的,并且需要大量的代码。经过使用Python 的一些实验,也证明很难嵌入。

为 Godot 创建自定义脚本语言的主要原因有:

Godot 使用多线程,而大多数脚本虚拟机对线程的支持不佳(Lua、Python、Squirrel、JavaScript、ActionScript 等)。
大多数脚本语言(Lua、Python、JavaScript)的虚拟机没有很好地支持类扩展,适配 Godot 工作方式的效率极低。
许多现有语言具有可怕的与 C++ 绑定的接口,导致大量代码、错误、瓶颈和普遍低效率(Lua、Python、Squirrel、JavaScript 等)。我们希望专注于出色的引擎,而不是大量的集成。
没有原生的向量类型(vector3、matrix4 等),导致使用自定义类型实现时,性能大大降低(Lua、Python、Squirrel、JavaScript、ActionScript 等)。
在大部分解释型编程语言(Lua、Python、JavaScript、ActionScript 等)中,垃圾收集器会导致延迟或不必要的大内存使用。
难以与代码编辑器集成以提供代码完成、实时编辑等(所有这些)。

GDScript 是为了减少上述问题以及防止更多问题而设计的。

以上信息来自godot官网
3.3 GDScript的基本语法
3.3.1 变量和数据类型

在GDScript中,你不需要声明变量的数据类型,它会根据赋值自动推断数据类型:

var name = "Godot" # string type
var age: int = 4 # integer type

变量:

变量可以被理解为存储数据的容器。在编程时,我们需要存储和处理各种数据,例如数字、文字或者更复杂的数据结构。变量就像是标签,我们可以通过它来访问或修改存储在内存中的数据。

数据类型:

数据类型指定了变量可以存储的数据的种类。不同的数据类型会有不同的属性和操作。常见的数据类型包括整数、浮点数、字符串等。

整数(int):用于表示整数,例如 -1, 0, 1, 2, 3 等。
浮点数(float):用于表示有小数点的数字,例如 -1.5, 0.0, 1.5 等。
布尔(bool):用于表示真或假,只有两个值 true 或 false。
字符串(String):用于表示文本,例如 "Hello, World!"。

每种数据类型都有其特定的用途和操作,了解和掌握它们是编程学习的基础。在GDScript中,你可以用简单的方式创建和使用这些数据类型,为你的游戏开发提供强大的支持。

后续章节中我们会详细讨论GDScript 的变量以及数据结构。
3.3.2 流程控制语句

控制流语句是编程中用来控制程序执行流程的语句,它们可以根据特定条件来决定程序的执行路径。这些语句帮助创建有逻辑的、可决策的程序。

GDScript支持常见的控制流语句,例如条件判断和循环:

# If statement
if age > 3:
print("Godot is mature.")
# For loop
for i in range(5):
print(i)

godot中的流程控制语句包括条件判断、循环、迭代等。关于这部分我们后边会有专门的章节讨论。
3.3.3 函数

函数是一组组织好的、可重复使用的代码,它可以完成特定的任务或计算并返回结果。函数可以带有参数(输入)并返回一个结果(输出)。通过使用函数,可以使代码更容易理解、测试和重用。

类比:想象一下,你有一个食谱来制作蛋糕,每当你想做蛋糕时,你就遵循食谱的步骤。在这里,食谱就像是一个函数,你放入原料(参数),然后按照食谱(函数)制作蛋糕,最终你得到了一个蛋糕(返回值)。

在GDScript中,你可以通过func关键字来定义函数:

func greet(name):
print("Hello, " + name + "!")
## 使用 -> 指定返回值的类型
func add(a:float, b:float) -> float:
return a + b

内建函数

godot为我们准备了很多常用的内建函数,同时我们也可以自定义函数。常用的内建函数包括:

print():用于在控制台输出文本。

print("Hello, World!")

str():将值转换为字符串。

var number = 123
var text = str(number) # text is now "123"

int() 和 float():将值转换为整数或浮点数。

var text = "123"
var number = int(text) # number is now 123

len():返回数组或字符串的长度。

var array = [1, 2, 3]
var length = len(array) # length is now 3

randi() 和 randf():生成随机整数或浮点数。

var random_number = randi() # random integer

节点相关的函数:Godot中的对象通常是节点,有许多函数可以用来处理节点,如 get_node(), add_child(), queue_free() 等。

var sprite = get_node("Sprite") # 获取名为"Sprite"的节点
add_child(sprite) # 将sprite节点添加为当前节点的子节点
sprite.queue_free() # 安排删除sprite节点

通过使用函数,你可以将代码组织成逻辑清晰、易于维护和重用的模块,这对于游戏开发和任何编程项目都是非常重要的。
3.3.4 类

GDScript是一种面向对象的编程语言,支持类的定义和继承:

class Person:
var name
func _init(_name):
name = _name
func introduce():
print("Hi, I am " + name + ".")

以上内容有不清楚的也没关系,老李会在后续章节中更详细深入的为大家讲解。
3.5 GDScript中的注解Annotations

在 Godot 4 中,注解(Annotations)被引入为一种为代码添加元数据的方法,它们可以影响代码如何被引擎处理。

下面是一些常用的注解及其用途:

@export: 使一个变量变得可以在编辑器中编辑。你可以为它指定一个类型,以更改编辑器中的显示方式。
@export var health: int = 100
@onready: 延迟初始化一个变量,直到节点被添加到场景树中。
@onready var player = get_node("Player")
@tool:使脚本在编辑器模式下运行,而不仅仅是游戏运行时。
@tool
extends Node
@icon:为脚本设置一个图标,这在创建自定义节点时非常有用。

此外,注解在网络编程中应用更加广泛,关于网络编程,我们会在后续的进阶内容中为大家做进一步的讲解!

这些注解提供了一种简洁、明了的方式来为你的代码提供额外的上下文和功能,使你能更有效地利用 Godot 的特性。
3.6 编程示例

让我们通过一个简单的示例来展示GDScript的基本用法:

extends Node # 继承Node类# 这是一个简单的GDScript程序
@export var message = "Hello, Godot!"
func _ready():
print(message + str(add(1,1)) # 输出"Hello, Godot! 2"
func add(a: int, b: int) -> int:
return a + b

在这个示例中,我们创建了一个继承自Node类的新类,并在_ready方法中输出了一条消息。
3.7本章小结

在本章中,我们介绍了Godot游戏引擎的GDScript脚本语言的基本知识,为没有编程基础的人提供了易于理解的解释和例子。首先,我们讨论了什么是变量和数据类型,以及Godot支持的常用数据类型。紧接着,我们探讨了控制流语句的概念,并介绍了GDScript中的常用控制流语句。之后,我们解释了函数的概念,并展示了一些Godot中常用的函数。

最后,我们探讨了Godot 4中新引入的注解语法,它们可以为代码提供额外的元数据,影响代码如何被引擎处理。我们介绍了一些常用的注解,如@export, @onready, @tool, @icon等,并通过示例展示了如何在GDScript中使用它们。



clq
2024-07-28 12:16:04 发表 编辑


https://blog.csdn.net/qq_42140780/article/details/134763264

--------------------------------------------------------
Godot4 GDScript vscode开发环境搭建
于我之下
于 2023-12-03 12:38:49 发布
阅读量1.3k
收藏 5
点赞数 4
文章标签: vscode ide 编辑器
版权
1、vscode 安装 godot-tool插件

2、插件扩展设置

Editor_path: 你的godot引擎的exe路径

GDscript_lsp_server_host: godot引擎语言服务器ip

GDscript_lsp_server_host: godot引擎语言服务器端口号

注意:语言服务器设置这里要跟Godot编辑器的设置对应上。对应的godot编辑器的设置:

编辑器-> 编辑器设置 -> 网络 -> 语言服务器 -> 远程主机、远程端口

3、godot编辑器设置

编辑器-> 编辑器设置->文本编辑器->外部

使用外部编辑器:√

可执行文件路径:vscode可执行exe的路径

执行参数:{project} --goto {file}:{line}:{col}
4、结束

经过以上配置,在godot编辑器双击你的gdscript脚本,就会自动打开vscode。你可以开始愉快地使用vscode编写你的项目了!





总数:1 页次:1/1 首页 尾页  
总数:1 页次:1/1 首页 尾页  


所在合集/目录
godot 更多



发表评论:
文本/html模式切换 插入图片 文本/html模式切换


附件:



NEWBT官方QQ群1: 276678893
可求档连环画,漫画;询问文本处理大师等软件使用技巧;求档softhub软件下载及使用技巧.
但不可"开车",严禁国家敏感话题,不可求档涉及版权的文档软件.
验证问题说明申请入群原因即可.

Copyright © 2005-2020 clq, All Rights Reserved
版权所有
桂ICP备15002303号-1