添加脚本
被添加到场景中的对象默认都是静止不动的,如果要让它们”动起来”,就需要用脚本来进行控制。本教程会给一个矩形对象挂上脚本,让它不断变大变小——第 4 步用代码手写实现,第 5 步用积木编辑器搭出同样的效果。
1. 创建对象
Section titled “1. 创建对象”按照创建一个对象中的步骤,向场景中添加一个矩形对象并选中它。属性窗口会显示它的各项属性。
2. 创建脚本文件
Section titled “2. 创建脚本文件”在资源管理器窗口中右键点击用于存放脚本的script文件夹,选择添加 → 脚本:

脚本默认名为 new.py,我们可以将其重命名为 big_small.py。双击它可以打开代码编辑器。

3. 把脚本挂载到矩形对象上
Section titled “3. 把脚本挂载到矩形对象上”在场景中选中矩形对象,找到属性窗口中的 脚本路径 一行:点击浏览图标选择刚创建的文件(把 .py 文件拖到这一行上效果相同)。文件名会显示在该行中,点击旁边的 × 按钮即可取消挂载。

4. 编写变大变小逻辑
Section titled “4. 编写变大变小逻辑”双击脚本文件即可在代码编辑器中打开该脚本,用下面的代码替换模板主体:
import pygamestudio as studio
class ObjectScript: def __init__(self, obj): # 1 self.obj = obj self.factor = 0.1 # 2
def on_update(self, dt): # 3 if self.obj.scale_x >= 5: # 4 self.factor = -0.1 elif self.obj.scale_x <= 1: # 4 self.factor = 0.1
self.obj.scale_x += self.factor # 5 self.obj.scale_y += self.factor各部分的作用:
__init__(self, obj):引擎会把对象交给脚本,把它保存在self.obj上,后面的回调就都能访问到它。self.factor:缩放因子,表示对象每次缩放时增加(或减少)的量。on_update(self, dt):游戏运行时每帧调用一次,dt是本帧时长(秒)。if / else:当对象的水平缩放属性scale_x大于等于5时,将self.factor设置为-0.1,表示要缩小对象。而当对象水平属性小于等于1时,将self.factor设置为0.1,表示要放大对象。self.obj.scale_x += self.factor:将对象的缩放属性scale_x和scale_y加上self.factor,当self.factor等于-0.1时,对象就会缩小,而当self.factor等于0.1时,对象就会变大。

点击代码编辑器工具栏的运行按钮(或按 Ctrl + R)后,会看到矩形变大变小的效果。

5. 用积木编辑器实现同样的效果
Section titled “5. 用积木编辑器实现同样的效果”不写代码也能搭出这套逻辑。再新建一个脚本(例如 big_small_blocks.py),把它拖到矩形的 脚本路径 一行上替换原脚本,然后在资源窗口中右键它,选择在积木编辑器中打开。

打开积木编辑器后,按照以下步骤依次执行:
- 点击变量标签页,新建一个数值类型的变量,变量名填写为
factor,初始值设置为0.1。 - 点击事件标签页,展开矩形分支,将每帧更新时(dt)积木拖放到画布上。
- 点击控制标签页,将如果积木拖放到画布上并进行拼接,选择属性
水平缩放,判断条件选择大于等于,值设置为5。 - 点击动作标签页,将设置属性积木拖入到如果积木块内,并将属性选择为
factor,值设置为-0.1。 - 点击控制标签页,将否则如果积木拖放到画布上并进行拼接,选择属性
水平缩放,判断条件选择小于等于,值设置为1。 - 点击动作标签页,将设置属性积木拖入到否则如果积木块内,并将属性选择为
factor,值设置为0.1。 - 点击动作标签页,将2个属性增加积木拖入到画布上并进行拼接,将它们的属性分别设置为
水平缩放和垂直缩放,值设置为factor。

确保矩形对象挂载了big_small_blocks.py脚本后,点击积木编辑器工具栏的运行按钮(或按 Ctrl + R)后,同样会看到矩形变大变小的效果。