标题
[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编写你的项目了!
NEWBT官方QQ群1: 276678893
可求档连环画,漫画;询问文本处理大师等软件使用技巧;求档softhub软件下载及使用技巧.
但不可"开车",严禁国家敏感话题,不可求档涉及版权的文档软件.
验证问题说明申请入群原因即可.