夜均

Scratch 精简全部指南

写给夏尔堕又在做独立游戏的梦了的Scratch教程

徒儿!我刚刚在网上看了一些 Scratch 的教程,发现大多是面向小朋友的,讲解贼慢,不太适合你。 所以我打算亲自写一份快速入门的教程,让你能够更高效地掌握 Scratch!这个教程是快速讲完Scratch所有的东西。不包含实践内容!


目录

TODO

用户界面介绍

打开https://turbowarp.org/editor 或者 ccw的 Gandi

打开后你会看到主要由以下几个部分组成:

alt text

角色的资源

每个角色都有专属于自己的三类资源:

当你在角色列表中选择某个角色时,可以通过上方的标签页切换编辑对应的资源。 在代码里边你可以调用或操作这些资源,例如切换造型来实现动画效果,或播放音效来增强表现力。

alt text

这里展示的是角色的属性。 除了上面的资源,每个角色都会拥有一系列属性。这些属性是角色的“身份信息”和“当前状态”,程序代码可以对它们进行读取或修改,从而控制角色的表现:

alt text

ok用户界面介绍完了

积木

Scratch 的代码是由积木组成的。这些积木可以分为三种主要类型,看它们的样子你也能猜出个大概喵

alt text

组合起来使用的列子:

alt text

提示:你可以点击积木来测试运行,看看他会返回什么,比如点击 (1 + 2) 积木会显示 3 这是一个非常实用的调试技巧!

程序的开始

在 Scratch 中,所有的程序都由一个特殊的积木——帽子积木(也称为“事件积木”或“起始积木”)开始。它们是触发代码执行的“事件监听器”。

alt text

试试这个,当你点击这个角色的时候就会触发这个事件(注:可以有多个同样的事件,比如多个当🚩被点击

事件驱动:让角色彼此沟通

除了直接的用户输入或游戏状态变化,角色之间也可以通过广播消息来相互沟通和协调行为(也可以使用变量列表来沟通,在下文会讲)。

这是构建复杂游戏逻辑的强大工具:

广播[消息1]: 一个角色可以“广播”一个消息(就像发出一个信号)。这个积木是一个命令积木。

当接收到[消息1]: 其他角色(甚至广播者自己)可以“监听”并响应这个消息。这是一个帽子积木。

alt text

流程控制与自定义积木

在游戏开发中,我们经常需要根据不同情况做不同的事,或者重复做某件事,以及在很多地方重复使用一段代码 使用控制分类里面的积木和自定义积木就能很好的解决这个问题!

条件判断

条件判断就是让程序学会“看情况办事”。当满足某个条件时,执行一段代码;否则,执行另一段代码,或者什么也不做

比如 如果血量小于 0,那么就死亡 如果拥有弹跳鞋子那么跳跃10高度否则跳跃3高度

Scratch 里面有 如果<>那么..., 如果<>那么...否则...

alt text

循环

循环就是重复做同一件事,直到满足某个条件才结束。比如。它是游戏更新、动画、敌人生成等不可或缺的部分。 游戏里无限生成怪物,直到玩家死掉或者通关 一直重复检测玩家是否按下移动按键

Scratch 里面有 重复10次..., 重复...直到<>, 等待<>

为什么等待也被列入循环了?其实等待就是一种循环,只不过他没有任何内容。

alt text

条件 + 循环结合

在实际游戏开发中,条件判断和循环往往会一起使用,构成游戏的核心逻辑。例如,游戏的主循环通常是一个 永远重复 积木,里面包含了一系列的 如果…那么… 积木来响应各种情况。 最常见的例子: 持续判断玩家是否按下了方向键,如果按下了就移动角色:

alt text

这里,永远重复 保证了游戏在持续地检查玩家的输入

自定义积木

Scratch 提供了多种多样的积木,但有时你发现需要重复写一段相似的代码,或者一段逻辑很长,看起来很乱,这时,自定义积木就派上用场了!自定义积木可以让你创建你自己的积木使用Scratch 提供的积木。你就能自己创建和使用自己封装的积木了

在这里可以创建和使用你已经创建的积木

alt text

创建自己的积木的时候也可以设置这个积木的输入:

alt text

它可以减少重复,就不用一遍遍堆相同的积木!只需要一块自定义积木!

也可以让代码更加整洁和模块化!别人一看积木名字就知道它干嘛。

数据类型

在编程里,数据类型就是不同种类的数据。 Scratch 目前支持三种基本的数据类型:布尔类型、数字类型、文字类型。

alt text

对应的数据类型放到对应的积木输入里面

数据结构:变量和列表

有时候想记录一些数据,比如玩家的分数,或者是游戏的地方数据。Scratch有两种存储数据的方法:变量列表

alt text

alt text

克隆体

假设你在做一个射击游戏,玩家能发射许多子弹。每次发射子弹都新建一个子弹角色?那太麻烦了!子弹、敌人大军,这些都需要大量的重复对象。克隆体能制造大量的重复对象,但每个重复对象又能拥有独立的数据状态(比如某个敌人的血量,某个子弹的坐标)

alt text

克隆体只有这三个积木:

私有变量

这里有个超级重要的点:每个克隆体在被创建时,会继承原角色所有变量的当前值,并且从那一刻起,它们各自拥有一份独立的变量副本

这意味着,如果一个变量叫 我的生命值,原角色是100,克隆体被创建时也是100。 但之后,其中一个克隆体被打掉50血,它的 我的生命值 变成50,这不会影响原角色或其他克隆体的 我的生命值。它们是各自独立的! 反之: 如果你想要所有克隆体共享一个全局信息(比如游戏的总分数),那就用“为所有角色”的全局变量。

alt text