GDScript 代码笔记(一)

在这篇博客中,我会讲GDScript代码表层一些的理解,有哪里大家觉得不太理解或者觉得哪里有问题的,欢迎大家来到我的评论区下面讨论和批评指正。

这次的代码内容是来自 开发游戏的老王的Godot教程中5.1 无尽水管子滚滚来(一)


讲解的是关于TImer节点的代码内容

#PipeManager.gd
extends Timer
var pipe_scn = preload("res://Objects/Pipe.tscn")#将要实例化的场景文件预加载进来

func _ready():
	connect("timeout",self,"on_timeout")#将"timeout"信号连接到"on_timeout"方法
	
func on_timeout():
	var pipe = pipe_scn.instance()#实例化
	add_child(pipe)#将实例化的结果作为自身的子节点



刚开始学习这块代码的内容的时候,我不太懂其对应的语法结构,那这里就只能借助官网的代码解释来对应理解

由于目前本人只系统性的学习过C语言该编程语言,在这里会尽量的穿插一些C语言的变量以方便理解
我来分段代码进行讲述我的理解。

#PipeManager.gd
extends Timer
var pipe_scn = preload("res://Objects/Pipe.tscn")#将要实例化的场景文件预加载进来

var是其定义变量,preload是其预加载一个类或变量。


var
var其实相当于C语言中的学习int,double定义对应变量类型。
在这里插入图片描述


preload

这里的preload的作用在学习C语言中并未系统学习其对应作用的代码关键词,但它在Godot种顾名思义就是一种预加载的方式,它通过声明向对应路径声明一个需要提交加载的资源。当资源真正被使用的时候立即执行,无需等待网络的消耗,这便是preload的作用。


则在上篇帖子中,强调此处代码对应的路径若出错,便使得整个程序报错。也就是换句话来说,我们所输入对应的路径是不存在的,计算机是并非能识别此代码。


则对应此处代码含义:

#PipeManager.gd
extends Timer
var pipe_scn = preload("res://Objects/Pipe.tscn")#将要实例化的场景文件预加载进来

func _ready():
	connect("timeout",self,"on_timeout")#将"timeout"信号连接到"on_timeout"方法
	
func on_timeout():
	var pipe = pipe_scn.instance()#实例化
	add_child(pipe)#将实例化的结果作为自身的子节点



此代码的意义就是将res://Objects/Pipe.tscn的路径预加载到pipe_scn中。


func _ready():
	connect("timeout",self,"on_timeout")#将"timeout"信号连接到"on_timeout"方法


connect()函数:

这里有个connect的关键词十分使人头疼,它有着什么作用呢。 英文翻译过来其实就是连接,那它在函数中的实际意义其实就是充当连接的作用。

在这里插入图片描述

这张就是官方对信号及其connect的关键词一个作用的简单介绍。

其实简单来说,就是把A连接在B上。在触发A的同时,会同时触发B这个信号。

在这里插入图片描述

在官方给出的函数解释中,其实就是health_depleted 信号连接到 Game 节点,然后发出信号,随之会调用_on_Character_health_depleted。

这便是connect的作用。


在开发游戏的老王中的Timer节点使用范例中,就有着利用connect的概念结合Timer节点制作一个定时器。摆一下连接:
Godot Engine:Timer节点使用范例

extends Timer

func _ready():
	connect("timeout",self,"_on_timeout")

func _on_timeout():
	print("到时间了")


这是制作定时器的代码脚本,Timer节点由于信号很简单,到了Wait Time的时间就发出一个timeout信号。

那么发出timeout信号之后,因connect函数的连接。自然而然就会调用func _on_timeout()函数,随之,利用printf输出到时间啦!

在这里插入图片描述

这便是制作定时器的所有原理。


那么回归我们本节内容的代码,既然要有connect函数的连接,自然而然就需要调用对应的函数。

func _ready():
	connect("timeout",self,"on_timeout")#将"timeout"信号连接到"on_timeout"方法
	
func on_timeout():
	var pipe = pipe_scn.instance()#实例化
	add_child(pipe)#将实例化的结果作为自身的子节点

那么等同于同上讲述计时器的概念。在调整后wait time的时间后,在隔一段时间,就会对应就会出现timeout信号。
请添加图片描述
随之就会根据所连的connect的函数,便调用on_timeout()函数。
请添加图片描述

那么这里就不细说on_timeout()函数对应的概念内容了,若有问题可以在评论区讨论。

第一行代码便是将之前待加载中的代码利用instance实例化,也就是我们说的加载的意思。

第二行代码便是我们说的进行重复出管子,将自身作为子节点,反复进行调用。 (这里利用add这一关键词,大家如果想更多了解,可以自己搜索一些相关的关键词解释)


出这个讲解代码的Godot专题,比较耗费时间,会更新稍微晚一些,更新的内容相对没那么多。请各位谅解!

也欢迎各位批评指正。在此也感谢 开发游戏的老王 的Godot教程。【手把手带你Godot游戏开发 第一弹】零基础入门案例:FlappyBird(教程目录及源代码)

点赞,是最好的鼓励哟~

  • 12
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柠檬茶12138

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值