7.Godot脚本介绍及变量的定义和导出

1. 脚本的定义

  • 游戏脚本 Script ,用代码来控制游戏对象和逻辑
  • godot使用 GdScript 作为脚本语言和python最类似,比python简单
  • 注意:自本章开始,每节课的项目源码都放在了github项目godot-start,可以直接对照示例项目
  • 游戏开发,也是一种程序设计,如果是0基础的同学,建议先学习一个强类型语言比如Java,C#,C++,再来学习GdScript就一通百通了

2. 脚本的使用

  • 如何使用一个脚本?
新建脚本 hello.gd ,编辑代码 ,保存一下
把脚本挂载到游戏节点上
运行游戏,点 Play Scene 运行当前游戏场景,在 Output 窗口里观察打印输出

3. 认识脚本

  • 因为是GdScript是弱类型语言,所以比较自由,但是我们可以约定一些原则让代码更加的规范:
类名必须与文件名相同,且为小写
比如场景名和节点名和脚本名都是一样的
尽量继承于 Node2D 节点,Node2D 节点中的Transform是我们用的最多的节点
继承sprite也没有关系,但是sprit里的属性很多用不到,比较浪费性能
如果不用tranform,也可以继承node节点,更加清晰
继承的节点的层级越往上就更简单
  • 常用函数内部执行顺序
默认定义了一些事件函数,例如,
_init():脚本初始化的时候调用,对象的构造器,类似于Java的构造函数construct,首先被调用
_ready():开始调用一次,可用于初始化脚本,是一个事件函数,脚本挂载以后会回调一个ready函数
_process(delta):每帧调用,帧间隔不等,可用于更新游戏

生命周期开始的时候会回调ready,每帧刷新的时候会回调process,delta是每帧调用之间的间隔

4.变量和数据类型

变量的概念与简单操作
  • 变量是可以代表数据的一种抽象概念。可以通过对变量名的操作来对变量代表的数据进行操作。
  • 在 GDS 中,你可以创建自定义的变量,也可以使用内置代码中的变量。
  • 变量可以进行计算与转换。必须在函数内发生
  • 即使是同一脚本文件,绑定不同的对象从而产生了同名的变量,这两个变量以及变量代表的数据也分别属于不同的对象,互相独立。因此使用变量前必须指明变量所属的对象
  • 变量是用于存储信息的"容器"。
var x=5;
var y=6;
var z=x+y;就像代数那样
x=5
y=6
z=x+y在代数中,我们使用字母(比如 x)来保存值(比如 5)。
通过上面的表达式 z=x+y,我们能够计算出 z 的值为 11。
在 godot 中,这些字母被称为变量。
gds数据类型分类
  • bool,一个字节,默认为false
  • int(同C++和Java long),8个字节,默认为0
    • 在godot里的表示范围-9223372036854775808~9223378036854775807
    • 2^64-1
  • float(同C++和Java double),8个字节,默认为0
  • String,默认为null,字符串可以存储一系列字符,如 “John Doe”。
  • 数组
  • 对象
  • null,变量没有被赋值,则默认为null
变量的作用

变量除定义的过程外,必须在函数内进行数值的修改,内置代码中的许多变量在修改后,会直接对游戏内容产生实质性的影响。而自定义的变量则不会。因此,可以用自定义的变量来定义逻辑上的游戏数据,而后通过判断逻辑上的数据情况,来调整内置代码中的变量,对游戏的画面、音效等产生实际的影响。


通过内置变量影响游戏

  1. 给sprite节点添加一个脚本
    在process函数输入
self.position.x = self.position.x + 1

这样每帧这个精灵节点就会往右移动1

  1. 给label节点也添加一个脚本
    在函数外定义一个全局变量
var c:String = "Hello World"

在ready函数中输入

self.text = c

在运行场景的时候文本框内会显示Hello World

导出变量
  • @export关键字可以让变量在编辑器中编辑,godot编辑器里的文档中有详细的用法
# 导出一个数字
@export var a = 1
# 导出一个节点路径
@export var b:NodePath
# 导出一个文件路径
@export_file var sound_effect_path: String
# 导出一个文件路径,以txt结尾
@export_file("*.txt") var notes_path: String

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

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

相关文章

【行业前沿】制造业的数字化转型如何做?

随着科技的迅速发展,数字化转型已经成为制造型企业提高竞争力的关键因素。它可以帮助制造型企业,在产品优化设计、材料采购、生产流程方面实现精细化管理;提升上下游协同生产能力,提高生产效率、降低生产成本、优化产品质量&#…

RUM 最佳实践-视觉稳定性的探索与实践

写在前面的话 在当今数字时代,网页的视觉稳定性对于提供良好的用户体验至关重要。其中一个衡量视觉稳定性的关键指标就是累积布局偏移(Cumulative Layout Shift,简称 CLS)。CLS 作为 Web Vitals 指标之一,它衡量的是网…

jql联表查询涉及到权限的最好用上临时表

JQL联表查询的两种方法 联表查询 为方便文档描述定义以下两个概念: 临时表:getTemp方法返回的结果,例:const article db.collection(article).getTemp(),此处 article 就是一个临时表虚拟联表:主表与副…

【MySQL数据库】 (篇一 ) 让你快速上手——新手速通版

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、如何起步?🏃‍1.创建数据库:2.选择数据库:3.删除数据库:4.创建表:5.删除表&#xff…

JDK中用到了哪些设计模式

一,结构型模式 1,适配器模式 用来把一个接口转化成另一个接口 java.util.Arrays#asList() javax.swing.JTable(TableModel) java.io.InputStreamReader(InputStream) java.io.OutputStreamWriter(OutputStream) javax.xml.bind.annotation.adapters.Xml…

48.基于SpringBoot + Vue实现的前后端分离-雪具销售系统(项目 + 论文PPT)

项目介绍 本站是一个B/S模式系统,采用SpringBoot Vue框架,MYSQL数据库设计开发,充分保证系统的稳定性。系统具有界面清晰、操作简单,功能齐全的特点,使得基于SpringBoot Vue技术的雪具销售系统设计与实现管理工作系统…

无人机发展历史

你知道吗?无人机竟然已经有这么多年的历史了!从最初的军事用途,到现在的民用、商用领域,无人机的发展简直是一部传奇! 🚀 遥想当年,无人机还只是军事领域的专属玩具,高不可攀。但如…

Linux的学习之路:12、地址空间(续)与进程的创建、终止和等待

摘要 本章将讲述上章没说的一些东西以及进程创建终止与等待 目录 摘要 一、地址空间(续) 二、创建 三、终止 四、等待 五、思维导图 一、地址空间(续) 上篇文章中介绍了地址空间,但是没有说为什么会有地址空间…

通过WSL在阿里云上部署Django项目MySQL

前端用Vue,后端用Django, nginx,Mysql 参照: 通过WSL在阿里云上部署Vue项目_阿里云 wsl-CSDN博客 阿里云重登录 采用Ubuntu系统, apt update #检查是否已经安装 mysql --version systemctl status mysql apt insta…

hook某银行加固app

分析 要在未修复dex并打包情况下对其app内在类进行hook,单纯的hook会由于加固的问题而导致加载不到内在想hook的类。因此需要进行加载加固的classloader。 在此之前需要先了解Context 在Android中,只有Application、Activity以及Service有自己的Contex…

Gradle系列(3)——Gradle extension(gradle扩展),如何自定义gradle扩展,AppPlugin,AppExtension原理

文章目录 1.什么是Extensions2.如何自定义Extension3.问题来了——如何通过自定义Extension给Plugin传递数据4.BaseAppModuleExtension和AppPlugin部分原理BuildTypes是如何创建并传递数据给AppPlugin的?AppPlugin是如何接收数据的?buildTypeContainer流…

HDLbits 刷题 -- Mux256to1

Create a 1-bit wide, 256-to-1 multiplexer. The 256 inputs are all packed into a single 256-bit input vector. sel0 should select in[0], sel1 selects bits in[1], sel2 selects bits in[2], etc. Expected solution length: Around 1 line. 译: 创建一个…

CESS 受邀出席香港Web3.0标准化协会第一次理事会议,共商行业未来

2024 年 4 月 5 日,CESS(Cumulus Encrypted Storage System)作为香港 Web3.0 标准化协会的副理事会成员,于香港出席了 2024 年度第一次理事会会议。此次会议汇聚了来自不同领域的知名企业和专家(参会代表名单见文末&am…

Linux——守护进程

在这篇文章中我介绍了关于tcp网络套接字,关于网络套接字编程的问题我会再次讲述一点东西,然后介绍关于守护进程的知识。 1. 关于网络套接字编程的一些问题 在进行套接字编程时我们一定是得先有套接字,并且我们在使用socket的一些接口时&…

2024年最佳游戏下载网站:6miu盘搜

2024有哪些好的游戏下载网站? 6miu盘搜是一款功能强大的网盘搜索工具,可以快速搜索并下载各种游戏。它支持多种搜索方式,包括游戏名称、游戏类型、发行商等,并且可以根据游戏大小进行精准搜索。用户可以通过6miu盘搜的高级搜索功能,找到自己需要的游戏,无论是在公共…

mysql开启基于位点的主从复制

MySQL的主从复制涉及至少两个MySQL实例:一个主库(Master)和一个或多个从库(Slave)。主库负责处理事务并记录所有变更到二进制日志(binary log)中,而从库通过读取并应用这些变更来保持…

MyBatis 源码分析 - 映射文件解析过程

1.简介 在上一篇文章中,我详细分析了 MyBatis 配置文件的解析过程。由于上一篇文章的篇幅比较大,加之映射文件解析过程也比较复杂的原因。所以我将映射文件解析过程的分析内容从上一篇文章中抽取出来,独立成文,于是就有了本篇文章…

新标准日本语 课后练习

自学错误可能较多,听力题不需要听力的就没听录音 第二十課 スミスさんはピアノを弾くことができます 練習1-1 1張さんは日本の歌を歌うことができます 张先生会唱日本歌 2小野さんは自転車に乗ることがで…

面试经典150题——跳跃游戏

面试经典150题 day9 题目来源我的题解方法一 动态规划双重循环方法二 贪心 题目来源 力扣每日一题;题序:55 我的题解 方法一 动态规划双重循环 使用一个dp表记录i位置是否可达,然后在判断是否可达时需要看前面的nums[j]j>i&&dp…

对称加密解密

Cipher本身可以加解密byte[],而且可以设定key和algorithm,安全性高。但是不能直接用于文本。因为UTF-8是可变长度的编码,有的字符需要用多个字节来表示,转换之后会出现byte[]数组长度、内容不一致的情况。 Base64也是对称加解密的…