当前位置: 首页 > news >正文

Godot学习笔记2——GDScript变量与函数

目录

一、代码编写界面

二、变量 

 三、函数

四、变量的类型 


Godot使用的编程语言是GDS,语法上与python有些类似。

一、代码编写界面

在新建的Godot项目中,点击“创建根节点”中的“其他节点”,选择“Node”。

点击场景界面右上角的绿色加号,路径处重新命名,模板选择“Empty”,即可进入代码编写界面。

二、变量 

在GDS中,我们使用“var”来定义一个变量。变量的命名规则与大多数语言一致,必须以字母、下划线开头,组成变量名的只能有字母、数字、下划线。

如果违反了变量命名规则,编译器会在代码编写区域的底部发出错误提示:

需要注意的是,变量之间的计算与转换只能在函数体内部进行,如果在外部,则会报错:

不同的变量分属不同的节点,在计算使用时需要强调是属于谁的变量。像这里我们的变量前应该有一个“self.”来表示这是节点自己的变量,但“self.”一般可以省略,所以并不是我们这里没有指定变量所属。 

 三、函数

在GDS中,我们使用“func”来定义一个函数:

 在这里,“_enter_tree()”是一个特殊的函数,它会在节点进入场景树时被自动调用。

我们可以在代码编写框的右上角点击“搜索帮助”,输入“_enter_tree”,即可查看文档中对改函数的介绍:

一般来讲,GDS中由系统自带的函数都具有与之相同的命名方式,即下划线开头。

在上述代码中,冒号后面的内容拥有了一个缩进,也就是一个"tab“键的长度。拥有同一级缩进的代码块将被视为在同一级。同时,GDS对代码的缩进非常敏感,少一个空格或多一个空格都是会报错的,这点与python非常像:

缩进错误

 在函数体中,我们首先使用了“print”函数,此函数也是提前封装好的,我们将鼠标移动到“print”处右键,选择“查找符号”,即可看到对该函数的介绍:

函数体最后一行“pass”,代表函数从这一行结束,一般函数的最后都要加这一句代码。 

此时,点击引擎右上角的开始按钮,即可看到控制台输出了变量“a”所代表的值1:

四、变量的类型 

在 GDS中,变量有四种类型,分别是:

  • int 整型
  • float 浮点型
  • string 字符串型
  • bool 布尔型

我们在GDS中定义了如下四种变量:

在GDS中,给变量赋值通常不需要先声明变量类型,系统会自动识别变量类型并进行动态更改。 

需要注意的是,字符串类型变量赋值的时候需要把字符串两边用双引号括起来,布尔型变量只有两个值:“true”或者“false”。 

在下方函数中,我们执行了一行把c的值赋值给a的代码,如果是在C语言环境下,运行会报错,但我们在Godot中运行看一下结果:

可以看到,“print”打印的是“Hello”,证明在GDS中变量并没有严格的类型界定。

我们也可以手动锁死每个变量的类型,只需在变量赋值时在等号前面加冒号和变量类型即可:

可以看到,此时函数体中出现了报错,说明a和c的类型已经被强制界定了。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Unity中UI系统3——UGUI
  • MySQL学习第一阶段
  • 【目标检测】Anaconda+PyTorch配置
  • 图像处理 -- ISP调优(tuning)的步骤整理
  • 2024 HNCTF PWN(hide_flag Rand_file_dockerfile Appetizers TTOCrv_)
  • 以Zookeeper为例 浅谈脑裂与奇数节点问题
  • 东京裸机云多IP服务器全面分析
  • 数学建模学习(2)——决策树
  • OpenCV 安装与基础使用教程(Python)
  • RabbitMQ的学习和模拟实现|GTest测试框架的介绍和简单使用
  • 数据结构代码
  • Git基本使用
  • 3D建模软件--犀牛Rhino for Mac
  • Python应用—浅谈利用opencv去除水印
  • 创建最佳实践创建 XML 站点地图--SEO
  • [数据结构]链表的实现在PHP中
  • 2017 年终总结 —— 在路上
  • 78. Subsets
  • Android Volley源码解析
  • canvas 绘制双线技巧
  • co.js - 让异步代码同步化
  • CSS居中完全指南——构建CSS居中决策树
  • DOM的那些事
  • Go 语言编译器的 //go: 详解
  • JS学习笔记——闭包
  • nodejs:开发并发布一个nodejs包
  • node-sass 安装卡在 node scripts/install.js 解决办法
  • Rancher-k8s加速安装文档
  • Stream流与Lambda表达式(三) 静态工厂类Collectors
  • Vim 折腾记
  • Vue ES6 Jade Scss Webpack Gulp
  • 半理解系列--Promise的进化史
  • 订阅Forge Viewer所有的事件
  • 排序算法之--选择排序
  • 容器服务kubernetes弹性伸缩高级用法
  • 什么软件可以提取视频中的音频制作成手机铃声
  • 腾讯优测优分享 | 你是否体验过Android手机插入耳机后仍外放的尴尬?
  • 主流的CSS水平和垂直居中技术大全
  • 追踪解析 FutureTask 源码
  • ​ubuntu下安装kvm虚拟机
  • # 透过事物看本质的能力怎么培养?
  • ###STL(标准模板库)
  • #include到底该写在哪
  • #我与Java虚拟机的故事#连载13:有这本书就够了
  • (1)Nginx简介和安装教程
  • (1)SpringCloud 整合Python
  • (C语言)fread与fwrite详解
  • (第二周)效能测试
  • (附源码)计算机毕业设计ssm基于Internet快递柜管理系统
  • (过滤器)Filter和(监听器)listener
  • (没学懂,待填坑)【动态规划】数位动态规划
  • (十八)devops持续集成开发——使用docker安装部署jenkins流水线服务
  • (一)、软硬件全开源智能手表,与手机互联,标配多表盘,功能丰富(ZSWatch-Zephyr)
  • *setTimeout实现text输入在用户停顿时才调用事件!*
  • .NET C# 操作Neo4j图数据库