Godot引擎 4.0 文档 - 循序渐进教程 - 脚本语言

news2025/1/12 15:47:25

本文为Google Translate英译中结果,DrGraph在此基础上加了一些校正。英文原版页面:

Scripting languages — Godot Engine (stable) documentation in English

脚本语言¶

本课将概述 Godot 中可用的脚本语言。您将了解每个选项的优缺点。在下一部分中,您将使用 GDScript 编写您的第一个脚本。

脚本附加到节点并扩展其行为。这意味着脚本继承了它们附加到的节点的所有功能和属性。

例如,假设一个 Camera2D 节点跟随一艘船的游戏。默认情况下,Camera2D 节点跟随其父节点。想象一下,当玩家受到伤害时,您希望相机抖动。由于此功能未内置于 Godot 中,因此您可以将脚本附加到 Camera2D 节点并对摇动进行编码。

可用的脚本语言¶

Godot 提供四种游戏编程语言:GDScript、C#,以及通过其 GDExtension 技术的 C 和 C++。有更多社区支持的语言,但这些是官方语言。

您可以在一个项目中使用多种语言。例如,在一个团队中,您可以在 GDScript 中编写游戏逻辑,因为它编写起来很快,并使用 C# 或 C++ 来实现复杂的算法并最大限度地提高它们的性能。或者您可以用 GDScript 或 C# 编写所有内容。这是你的选择。

我们提供这种灵活性来满足不同游戏项目和开发人员的需求。

我应该使用哪种语言?¶

如果您是初学者,我们建议您从 GDScript 开始。我们专门为 Godot 和游戏开发人员的需求制作了这种语言。它具有轻量级和直接的语法,并提供与 Godot 的最紧密集成。

对于 C#,您将需要一个外部代码编辑器,如 VSCode或 Visual Studio。虽然 C# 支持现已成熟,但与 GDScript 相比,您会发现它的学习资源较少。这就是为什么我们主要向已经有过该语言经验的用户推荐 C# 的原因。

让我们看看每种语言的特性及其优缺点。

GDScript¶

GDScript是 为 Godot 构建的面向对象和 命令式编程语言。它由游戏开发人员制作并为游戏开发人员制作,以节省您编写游戏代码的时间。其特点包括:

  • 导致短文件的简单语法。

  • 极快的编译和加载时间。

  • 紧密的编辑器集成,具有节点、信号的代码完成,以及来自它所附加的场景的更多信息。

  • 内置矢量和变换类型,使其能够高效地大量使用线性代数,这是游戏所必需的。

  • 像静态类型语言一样高效地支持多线程。

  • 没有垃圾回收,因为此功能最终会在创建游戏时成为障碍。在大多数情况下,引擎默认为您计算引用并管理内存,但如果需要,您也可以控制内存。

  • 渐进类型。默认情况下,变量具有动态类型,但您也可以使用类型提示进行强类型检查。

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

注:为什么我们不直接使用 Python 或 Lua 呢?

多年前,Godot 使用 Python,然后是 Lua。两种语言的集成需要大量的工作并且有严重的局限性。例如,线程支持是 Python 面临的一大挑战。

开发一种专用语言不会给我们带来更多的工作,我们可以根据游戏开发者的需求对其进行定制。我们现在正致力于性能优化和第三方语言难以提供的功能。

.NET/C#¶

由于 Microsoft 的C#是游戏开发人员的最爱,我们正式支持它。C# 是一种成熟且灵活的语言,拥有大量为其编写的库。感谢微软的慷慨捐赠,我们可以增加对它的支持。

C# 在性能和易用性之间提供了很好的折衷,但您应该了解它的垃圾收集器。

注:您必须使用 Godot 编辑器的 .NET 版本在 C# 中编写脚本。您可以在 Godot 网站的下载页面上下载它。

由于 Godot 使用 .NET 6,理论上,您可以在 Godot 中使用任何第三方 .NET 库或框架,以及任何符合公共语言基础设施的编程语言,例如 F#、Boo 或 ClojureCLR。但是,C# 是唯一官方支持的 .NET 选项。

注:GDScript 代码本身的执行速度不如编译后的 C# 或 C++。但是,大多数脚本代码会调用引擎内用 C++ 代码中的快速算法编写的函数。在许多情况下,使用 GDScript、C# 或 C++ 编写游戏逻辑不会对性能产生重大影响。

基于GDExtension的C++¶

GDExtension 允许您使用 C++ 编写游戏代码,而无需重新编译 Godot。

由于我们使用了内部 C API Bridge,您可以使用任何版本的语言或混合编译器品牌和版本来生成共享库。

GDExtension 是性能的最佳选择。您不需要在整个游戏中都使用它,因为您可以用 GDScript 或 C# 编写其他部分。

使用 GDExtension 时,可用的类型、函数和属性与 Godot 的实际 C++ API 非常相似。

总结¶

脚本是包含附加到节点以扩展其功能的代码的文件。

Godot 支持四种官方脚本语言,为您提供性能和易用性之间的灵活性。

例如,您可以混合使用多种语言,以使用 C 或 C++ 实现要求苛刻的算法,并使用 GDScript 或 C# 编写大部分游戏逻辑。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/551820.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CentOS7搭建伪分布式Hadoop(全过程2023)

##具体操作目录## 1.配置静态ip2.关闭防火墙3.修改主机名为 *master* ,并重启虚拟机vi /etc/hostname 4.修改主机名与ip映射5.设置SSH免密登录6.安装配置java环境----------------------正式Hadoop配置1.移动安装包到合适位置2.解压安装包并重命名3.配置环境变量4.修…

know it and do it

overview: 在一盘盘有立即反馈的系统中,可以更直观的看到知道一个道理和能自然的用出来之间的鸿沟有多大。 这个就是日积月累的训练的意义了。 一夜回到解放前 继续金铲铲的游玩回味,之前一段时间忙于工作就放下了,后来新的版本…

20230521 AI 一周大事件汇总

🚀 ChatGPT 上线联网和插件功能 OpenAI宣布将在这周推出联网和插件功能,位于Alpha和Beta通道的ChatGPT Plus用户都可使用70多个上线的插件。 更新意味着ChatGPT将利用最新的信息和资讯为使用者提供服务。 上线的ChatGPT插件种类涵盖了行程安排助理、代…

拿捏大厂面试官的高质量自动化测试工程师简历--看完必有所获

一、前言:简历(职场敲门砖) 作为软件测试的垂直领域深耕者,面试或者被面试都是常有的事,可是不管是啥,总和简历有着理不清的关系,面试官要通过简历了解面试者的基本信息、过往经历等&#xff0c…

阿里p10手敲python +pytest +yaml + Allure 实现接口自动化框架

以前弄过好多接口自动化框架的东西,比如httprunner2.0版本实现的接口自动化框架,还有httprunner3.X实现的接口自动化框架,这些都是开源的,实现起来比较简单。 以及使用pythonunittestddtyaml等工具实现的接口自动化框架等。 今天…

【腾讯云 Finops Crane 集训营】安装使用及EHPA弹性演示

随着时间的推移,降本增效成为了企业界和组织中的一个新口号。在2023年,这个口号进一步获得了广泛的认可和重要性,成为了许多组织在业务运营中的关键目标。在2023年,许多组织开始将降本增效作为战略性目标,并将其融入到…

3.fabric二进制工具包介绍

(1)Fabric二进制工具包: Fabric二进制工具包:Fabric二进制工具包(Fabric Binary Distribution)是Hyperledger Fabric的核心组件,它包含了一系列可执行的二进制文件,用于搭建、管理和操作Fabric网络。该工具包提供了一套命令行工具,可以执行各种与Fabric网络相关的任务…

模板(初阶)

目录 一、泛型编程二、函数模板2.1 函数模板的概念2.2 函数模板的格式2.3 函数模板的原理2.4 函数模板的实例化2.5 模板参数的匹配原则 三、类模板3.1 类模板的定义格式3.2 类模板的实例化 一、泛型编程 如何实现一个通用的Swap函数 void Swap(int& x, int& y) {int …

chatgpt赋能Python-pythonapp自动化

Python App自动化:优化SEO的终极解决方案 随着互联网的发展,SEO(搜索引擎优化)变得日益重要。对于任何网站或应用程序开发人员来说,SEO应该是一个非常重要的考虑因素。为了帮助开发人员和企业提高其在线可见性&#x…

Squid代理服务器应用

在web架构中,用户一般进入负载均衡层,通过调度来访问web应用层,但是如果访问量太大,并发量较高,web应用层会吃不消,我们把静态资源、经常要访问的资源放入缓存,用户直接访问缓存层,加…

解析使用FPGA逻辑实现FIR滤波器的几种架构

有限脉冲响应(finite impulse response,FIR)数字滤波器 一、FIR数字滤波器理论介绍 FIR滤波器的实质就是输入序列与系统脉冲响应的卷积,即: 其中,N为滤波器的阶数,也即抽头数;x(n)为第n个输入序列&#xff…

人工智能轨道交通行业周刊-第45期(2023.5.15-5.21)

本期关键词:动车洗澡、热备列车、火车司机室、无缝线路、图像分割、自动标注 1 整理涉及公众号名单 1.1 行业类 RT轨道交通人民铁道世界轨道交通资讯网铁路信号技术交流北京铁路轨道交通网上榜铁路视点ITS World轨道交通联盟VSTR铁路与城市轨道交通RailMetro轨道…

Linux开发工具:yum和vim的使用

目录 一. Linux下的软件 1.1 软件安装的三种方法 1.2 采用yum安装软件 1.3 yum源的问题 二. vim开发工具的使用 2.1 vim的三种基本模式 2.2 命令模式下vim的常用指令 2.2.1 定位相关指令 2.2.2 光标移动相关指令 2.2.3 插入相关指令 2.2.4 复制粘贴相关指令 2.2.5 替…

Tauri应用开发(三):自定义拖拽区域

1. 自定义拖拽:data-tauri-drag-region tauri默认的顶部可拖拽,有时候我们不需要这个拖拽,或者需要自定义拖拽区域时,就需要通过tauri提供的data-tauri-drag-region属性来自定义拖拽区。 ![在这里插入图片描述](https://img-blog…

基于Python的图书信息管理系统

1引言 进入21世纪以来,信息技术从根本上推动了图书馆的飞速发展,计算机和计算机管理系统已成为图书馆进行图书管理的主要设备和系统。虽然目前很多大型的图书馆已经有一整套比较完善的管理系统,但是在一些中小型的图书馆中,大部分…

【Python 虚拟环境创建】解决遇到的问题并在vscode上测试

目录 一、前提准备 二、python虚拟环境创建 解决问题:‘virtualenv’/‘mkvirtualenv‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件。 解决问题:pycharm终端提示无法加载文件 E:\software\python_pycharm\venv\Scripts\activat…

Kuberntes云原生实战09 Kubernetes高可用安装小结

大家好,我是飘渺。 今天咱们继续更新Kubernetes云原生实战系列,本节文章是我们在安装过程中可能会遇到的问题以及解决方法。(都是我踩过的坑,你们大概率也会遇到~) 1. kubesphere平台无法使用kubectl命令行工具 问题现象 如果你给你的KubeSphere在Nginx上配置了域名访…

【2023 雷泽杯 · Misc】png的秘密

一个关于png结构的题目 一、题目 一张打不开的png文件,唉。 二、解题思路 少了头,就给他加上。我比较笨,还是萌新,采用导出16进制,添加后,010editor导入16进制。 添加之后,顺眼多了。然后用png…

阿里云服务器 之 mqtt服务器搭建及使用

本文主要是对mqtt的学习使用,其中服务器是基于阿里云服务器的mqtt功能,客户端使用的是mqttx软件。 一、服务器部分搭建说明 1、如果是首次使用,则需要经过注册与认证的步骤。 2、找到"产品与服务"-->"物联网平台"&…

DAY 60 mysql的备份与恢复

数据备份的重要性 备份的主要目的是灾难恢复。 在生产环境中,数据的安全性至关重要。 任何数据的丢失都可能产生严重的后果。 造成数据丢失的原因: 程序错误人为操作错误运算错误磁盘故障灾难(如火灾、地震)和盗窃 数据库备份…