在本课中,您将从头开始逐步创建一个完整的 2D 游戏。
该视频基于KidsCanCode的开源游戏。
我们检查了很多代码,所以我没有时间解释每个节点是如何工作的或它提供的其他功能;它会使视频变得非常冗长和乏味。
在这里,您将通过示例进行学习。
目标是让您创建一个完整的游戏,以便在一小时内查看整个过程。
您将学会:
- 从头到尾创建一个完整的游戏。
- 用简单的动画编写一个播放器。
- 使用代码在屏幕周围随机生成敌人。
- 设计和编码界面来启动和重玩游戏。
- 计算并显示玩家的得分。
- 编码游戏结束条件并重新开始游戏。
您可以在此处下载入门项目:Dodge the Creeps starter assets
下面,我将就本教程中使用的 yield 关键字为您提供更多见解。您可以在观看视频后继续阅读。
YIELD 关键字和协程
当你在函数中使用 yield 时,它会导致它停止执行。然后该函数等待信号并在稍后恢复。
这是它在引擎盖下的工作方式。
当您调用一个函数时,GDScript 编译器会在内存中创建一个对象来表示其当前状态。
该对象跟踪:
- 当前正在执行的代码行。如果出现错误,Godot 可以告诉您它发生在哪一行。
- 函数本地的任何变量(和值)。这些变量是使用函数创建的,并在调用结束后删除。
一旦函数返回,代表函数的对象就会从内存中释放出来。
当你使用 时yield,Godot 将函数的状态保存在内存中的时间更长。
您稍后暂停和恢复的这些功能称为协程。
我们这样称呼它们是因为它们允许函数相互委托工作并等待结果。
您必须小心这些函数的异步性质。如果他们没有收到信号,他们永远不会完成并继续堆积在你的记忆中。
您应该始终尽早测试它们是否按预期工作,就像我们在编写开始游戏序列时所做的那样。
无论如何,协程是一项非常强大的功能,可以帮助您将代码分组在一个地方。
这就是您的第一个 2D 游戏。在下一课中,您将从头开始创建一个完整的 3D 游戏。
