积木脚本
积木是可视化制作工具中承担非常重要的逻辑关联的一部分,我们采用事件头触发的模式竖向排列拼接积木,每个事件头被触发后才会执行内部的积木,如果是散落的积木则不会执行
这里有几个通用概念,大部分积木都会有主语的选择,当我们选主语为其他精灵时,我们就可以在当前精灵控制其他精灵
还有几个固定的选项
- 自己: 指精灵自己,常用主语,一般积木都默认操作自己,也可以用来在克隆体启动时指代克隆体本身
- 创建者: 特指克隆体的创建者,在当克隆体被创建时使用,用于找到创建该克隆体的对象
- 随机: 只会在屏幕内随机,而不是真正的无限随机
- 手指: 指用户操作屏幕的触发坐标点
- 被碰撞者: 在发生碰撞时使用,在监听碰撞的事件里找到被碰撞的对象
- X: 横坐标
- Y: 纵坐标
- 边缘: 特指场景的边缘,通常就是屏幕看到的区域
- 子精灵: 容器特有的选项,通常用于控制被克隆的容器
- 阻塞动画: 部分动画积木具有等待的效果,必须等待动画完成才会往下执行
事件
丰富的事件钩子积木能快速简单的控制游戏流程,监听状态和输入
启动事件都是“头部积木”,只有启动事件被触发,其中包含的积木队列才会被依次执行。
积木名称 | 参数 | 描述 |
---|---|---|
当场景启动时 | 无 | 当前场景的所有精灵初始化之后,触发此事件,我们推荐正式做项目时用此积木代替当游戏开始时 |
当精灵被[?]时 | 点击/按下/按住/放开/双击 | 精灵绑定用户操作相关的事件,事件的顺序是按下->按住->放开 |
当屏幕被[?]时 | 点击/按下/按住/放开/移动/双击 | 屏幕绑定用户操作相关的事件,可在任意精灵的积木区域绑定 |
当在屏幕向[?]滑动 | 上下左右 | 监听用户操作滑动手势 |
当[?]碰撞[?] | [精灵]-[精灵/边缘] | 全局监听碰撞事件,碰撞的瞬间仅触发一次直到不再接触才能再次触发 |
当精灵移出场景 | 上/下/左/右/全部边缘 | 精灵移出边缘后持续触发,常用于监听并销毁克隆体 |
当作为克隆体启动时 | 无 | 使用「克隆[?]」积木产生的克隆体时都将立即触发此事件 |
当收到通知[?] | 选项:消息名 | 当收到该消息名对应的通知时触发,常用于跨精灵互相触发 |
当设备方向变化 | 左/右 | 手机左、右翻转时触发 |
当<条件>成立 | <条件> | 可以任意搭配侦测条件,条件成立时触发 |
当广告播放完成 | <条件> | 用于侦测广告是否播放完成,条件成立时触发 |
当广告拉取异常 | <条件> | 当广告拉取异常时触发,用于调试和异常处理 |
当小游戏显示 | 无 | 当小游戏在手机端被打开,触发onShow时 |
当小游戏隐藏 | 无 | 当小游戏在手机端被关闭,触发onHide时 |
当跳转到小程序成功 | <条件> | 当小游戏在手机端被关闭,触发onHide时 |
逻辑
积木名称 | 参数 | 描述 |
---|---|---|
重复执行 | 无 | 重复执行频率跟游戏的刷新频率一致,约16.67ms一次 |
重复执行(n)次 | 整数 | 有限次的循环,执行频率跟游戏的刷新频率一致,约16.67ms一次 |
重复执行直到<条件> | 条件积木 | 一直重复执行,直到<条件>为真 |
逻辑循环(n)次 | 整数 | 有限次的循环,在当前帧全部执行完毕,在逻辑循环中的克隆会立即克隆 |
退出循环 | 无 | 退出最近一层重复执行语句 |
退出逻辑循环 | 无 | 退出最近一层逻辑循环语句 |
如果<条件> | 条件积木 | 条件判断语句,符合条件则执行 |
如果<条件>,否则 | 条件积木 | 条件判断语句,符合条件则执行,否则执行另一个 |
等待(n)秒 | 正数 | 等待(n)秒之后继续执行下面的积木动作 |
等待(n)秒 | 正数 | 等待(n)帧之后继续执行下面的积木动作 |
等待<条件> | 条件积木 | 等待<条件>为真之后继续执行下面的积木动作 |
视频教程:逻辑循环和重复执行的区别
控制
「克隆」是使用积木进行可视化编程最重要的能力之一,它完全复制了克隆本体的所有属性并继承所有事件。方便开发者复用和管理具有相同动作行为的精灵组。
克隆体继承的属性是初始属性,即设置里面的值。由积木改变后的属性不会继承
示例精灵克隆
积木名称 | 参数 | 描述 |
---|---|---|
设置[精灵][?]拖拽 | 精灵列表;[任意方向/横行/纵向/不可] | 设置精灵是否可被拖拽 |
设置[精灵][?]手指事件 | 精灵列表;[响应/不响应] | 设置精灵是否可被用户点击到触发点击事件 |
通知[所有人/精灵][?] | 所有人/精灵列表;通知列表 | 发送通知 |
克隆[精灵] | 精灵列表 | 复制一个精灵实例所有属性并继承所有事件 |
删除此克隆体 | 无 | 如果当前的精灵实例是克隆体,销毁自己 |
切换到场景[场景] | 场景列表 | 切换场景,具体用法看场景管理 |
切换到下一个场景 | 无 | 切换到下一个场景,注意最后一个场景不能使用该积木 |
切换到第(1)个场景 | 整数 | 切换到某个场景,可以配合变量切换到相应场景 |
销毁场景[场景] | 场景列表 | 销毁场景,具体用法看销毁场景 |
销毁第(1)个场景 | 整数 | 销毁场景,可以配合变量销毁相应场景 |
停止当前精灵的[事件] | 选项 | 停止对应的事件或者所有事件 |
重启游戏 | 无 | 销毁所有场景重置所有数据重新启动游戏 |
重启当前场景 | 无 | 销毁当前场景并重新启动当前场景 |
设置[参与/不参与]碰撞 | 选项 | 是否参与与其他精灵的碰撞(非物理) |
| 全局计时器归零 | 无 | 重置全局计时器为零 | | 全局计时器 | 无 | 一个从游戏开始自动开始计算的时间戳 |
摄像机相关的积木使用介绍查看摄像机
运动
积木名称 | 参数 | 描述 |
---|---|---|
移动到X:(0) Y:(0) | 数字 | 设置精灵的 X、Y 坐标 |
将X/Y坐标设置为(0) | 数字 | 设置精灵的 X/Y 坐标 |
将X/Y坐标增/减(10) | 数字 | 增减改变精灵的 X/Y 坐标 |
移动(10)步 | 整数 | 向当前精灵的移动朝向角度移动10步,这里的1步即1个像素 |
设置移动方向为(45)度 | 0-360 | 改变当前精灵的移动朝向为某一角度 |
设置移动方向为[?]度 | 其他精灵 | 改变当前精灵的移动朝向为对准其他精灵的角度 |
移动到[?]的[相对坐标/绝对坐标] | 随机/创建者/手指/[精灵] | 让精灵坐标设置到到[随机/创建者/手指/某精灵对象]的相对/绝对位置 |
面向[?]位置 | [精灵] | 默认面向是0°(正右方向),面向和旋转角度稍有不同,我们调整好精灵方向对准正右方向后,即可使用面向来旋转精灵,相当于初始化修正了旋转的角度 |
面向(20) | 0-360 | 设置精灵面向的角度 |
旋转到(20)度 | 0-360 | 精灵旋转到固定度数 |
旋转(45)度 | 0-360 | 精灵向逆时针旋转n度 |
正常情况下相对坐标和绝对坐标一致,相对坐标是以容器坐标为标准,绝对坐标是以游戏场景坐标为标准
外观
积木名称 | 参数 | 描述 |
---|---|---|
显示 | 无 | 让精灵在场景中显示 |
隐藏 | 无 | 让精灵在场景中隐藏 |
切换造型为[?] | 造型列表 | 切换精灵造型到某个已添加的造型 |
切换到第(n)个造型 | 整数 | 切换精灵造型到序号为 n 的造型 |
将造型[?]翻转 | 水平/垂直 | 将精灵[水平/垂直]镜像翻转 |
动态切换自己的造型为(网址) | 图片地址 | 动态设置造型图片,不需要上传素材到素材库 |
切换到第(n)帧 | 整数 | 使用具有帧动画的精灵指定到某一帧 |
将精灵[?]设置为(n) | [宽/高/宽高]/(正数) | 修改精灵的[宽/高/宽高]为指定的值 |
将精灵大小设置为(n)% | 正数 | 基于当前尺寸进行百分比放大或缩小 |
将精灵大小[增加/减少] (n)% | 正数 | 基于当前尺寸缩放精灵的大小 |
设置透明度为(0.5) | 正数 | 设置精灵的透明度,透明度的值的范围是0(完全透明)-1(不透明) |
设置透明度[增加/减少] (0.1) | 数字 | 修改精灵的透明度,透明度的值的范围是0(完全透明)-1(不透明) |
设置颜色为[?] | 颜色 | 设置精灵的叠加颜色 |
设置颜色为[?] [?] [?] | 正数 | 设置精灵的叠加颜色 |
修改[数字精灵]数字为(0) | 数字精灵列表/数字 | 动态改变数字精灵的值 |
修改[数字精灵]的值[增加/减少] (0) | 数字精灵列表/数字 | 动态改变数字精灵的值 |
修改[文字精灵]内容为(你好) | 文字精灵列表/字符 | 动态改变文字精灵的文本内容 |
将层级[上移/下移] (1) | 整数 | 将精灵的层级上调/下移,最上层的会遮住下层的 |
将层级移至[?] | 最上层/最下层 | 将精灵的层级移至最上层或者最下层 |
获取[文字精灵]的文本 | 文字精灵列表 | 获取文本内容 |
动画
积木名称 | 参数 | 描述 |
---|---|---|
在(n)秒内[循环/单次]播放造型 | 数字;选项 | 播放造型帧动画,不会阻塞后续积木 |
停止播放造型 | 无 | 停止播放造型动画 |
在(n)秒内透明度改变为(n) | 数字 | 阻塞式,在几秒内改变透明度,n秒之后才会执行下一个积木 |
在(n)秒内缩放至x:(n)y:(n) | 数字 | 阻塞式,在几秒内改变宽高 |
在(n)秒内滑行到x:(n)y:(n) | 数字 | 阻塞式,在几秒内改变位置 |
在(n)秒内滑行到[随机/精灵]位置 | 数字;选项 | 阻塞式,在几秒内改变位置 |
侦测
积木名称 | 参数 | 描述 |
---|---|---|
[精灵]的[?] | 选项 | 精灵的某个属性,详情查看:视频教程 |
手指的[x/y]坐标 | [x/y] | 返回当前手指在屏幕的[横/纵]坐标 |
手指移动的[x/y]坐标 | [x/y] | 返回上一帧到这一帧为止手指在屏幕的[横/纵]方向移动的距离 |
[精灵]与[手指/边缘/精灵]的距离 | [精灵]/[手指/边缘/精灵] | 返回两个对象之间的距离 |
[精灵]的[?]行为的[?] | 当精灵添加行为后可以选择 | 获取自己或其他精灵的行为的属性 |
[精灵]的[?]行为的[?] | 当精灵添加行为后可以选择 | 获取自己或其他精灵的行为的布尔值 |
[精灵]碰到[?] | [边缘/精灵] | 碰到的一瞬间触发一次 |
[精灵]与[?]相交 | [边缘/精灵] | 相交状态,碰撞后持续触发直到移出 |
[精灵]移出[?] | [边缘] | 移出后持续触发 |
屏幕被按下 | 无 | 手指是否在屏幕超过300ms |
[精灵][?] | [显示/隐藏] | 返回精灵的显示状态 |
当前在[?] | 场景列表 | 返回精灵是否在某个场景中 |
是克隆体 | 无 | 判断当前精灵对象是否是克隆体 |
运算
积木名称 | 参数 | 描述 |
---|---|---|
算数运算 | 数字 | 下拉框可选择加、减、乘、除、取余数 |
取(1)到(10)的之间的随机整数 | 数字 | 取范围内随机整数 |
数值计算 | 正数 | 四舍五入、向上取整、向上取整、绝对值、sqrt(平方根)、sin(正弦)、con(余弦)、tan(正切)、asin(反正弦)、acon(反余弦)、atan(反正切)、log(对数) |
取两个数的[最大值/最小值] | 数字 | 求最大/小值 |
π | 无 | 返回3.1415926 |
将(?)和(?)拼接 | 文字 | 将两个文字拼接 |
(abc)的第(1)个字符 | 数字 | 求字符串的某一个字符,比如abc的第2个字符就是b |
(abc)的字符数 | 文字 | 比如abc的字符数就是3 |
获取(abc)的第(?)个字符到第(?)个字符 | 数字 | 比如abc的第2个字符到第3个字符就是bc |
(b)在(abc)首次/末次出现的位置 | 文字 | 比如b在abc首次出现的位置就是2 |
当前[时间] | 时间列表 | 返回当前时间的年份/月份/日期/小时/分钟/秒数/毫秒/时间戳/星期数 |
数值判断 | 数字 | 下拉框可选择大于、小于、等于、小于等于、大于等于、不等于 |
逻辑运算 | 条件积木 | 并且:两个条件都为真时为真;或者:其中一个条件为真就是真 |
否定判断 | 条件积木 | 判断某条件为假 |
(abc)是否包含(a) | 条件积木 | 比如abc是否包含a:为真 |
数据
关于数据的介绍可以查看数据管理
积木名称 | 参数 | 描述 |
---|---|---|
设置[?]属性(key)的值为(?) | 精灵;文本;变量、文本或数字 | 设置精灵的属性key和对应的值,和局部变量一样属于某个精灵,不同的是别的精灵可以访问和修改 |
属性(key)的值 | 文本 | 返回某个属性key的值 |
[?] | 变量 | 红色,返回变量的值 |
[?] | 列表 | 橙色,返回列表的值 |
[?] | 表格 | 黄色,返回表格的值 |
[?] | 对象 | 深黄色,返回对象的值 |
将[?]设置成(c) | 变量;文本或数字 | 设置变量 |
将[?]增减(n) | 变量;数字 | 变量增加或减少 |
[?]的第(n)项 | 列表;数字 | 返回列表的第n项的值 |
[?]的项目数 | 列表 | 返回列表的项目数 |
(c)在[?]的位置 | 文本或数字;列表 | 返回某个值在列表中的位置序号 |
将(c)加入[?] | 文本或数字;列表 | 在列表的最后加入某一个值 |
删除[?]的第(n)项 | 列表;数字 | 删除列表的第n个序号的值 |
删除[?]的全部项目 | 列表 | 清空列表 |
在[?]的第(n)项插入(c) | 列表;数字;文字或数字 | 在列表中的某个位置插入值 |
在[?]的第(n)项替换为(c) | 列表;数字;文字或数字 | 在列表中某个位置的值替换为c |
将[?]随机打乱 | 列表 | 列表中数据进行随机重新排序 |
[?]包含(c) | 列表;文字或数字 | 判断列表是否包含c |
获取[?]的第(n)行 | 表格;数字 | 返回表格的第n行的列表 |
获取[?]的第(n)列 | 表格;数字 | 返回表格的第n列的列表 |
获取[?]的第(n)行第(n)列 | 表格;数字;数字 | 返回表格的第n行第n列的值 |
获取[?][行/列]的长度 | 表格 | 返回表格的是几行几列 |
将[?]的第(n)行(m)列替换为(c) | 列表;数字;数字;文字或数字 | 在表格中某个位置的值替换为c |
获取[?]对象(KEY)的值 | 对象;文本 | 获取对象的某个key对应的值 |
设置[?]属性(key)的值为(?) | 对象;文本;变量、文本或数字 | 设置对象的属性key和对应的值,和精灵的属性有所区别 |
删除[?]的属性(key) | 对象;文本 | 删除对象的某个key和对应值 |
key不要填变量,直接输入
函数
函数是一系列积木的组合,由开发者自己创建,在当前项目使用
如果我们需要多次在不同的精灵里使用同一批积木时,例如敌人和主角的碰撞逻辑,敌人的销毁逻辑等,我们就需要自己创建一些函数来节省我们的积木,提高开发效率
如图,我们在积木区域创建一个函数,输入函数名称,即可展开一个新的积木面板,函数积木面板和精灵积木面板类似,不同的精灵调用函数时,函数中的自己都是指代当前精灵自己
并且函数具有传递参数的功能,当我们给函数增加参数并命名后,我们在调用函数时就可以给函数传递对应的参数来达到不同的效果,注意:函数界面上方新增的参数是拖出来使用的
声音
积木名称 | 参数 | 描述 |
---|---|---|
播放声音[?] | 选项 | 播放一遍音频资源 |
循环播放声音[?] | 选项 | 无限循环播放当前音频资源 |
循环/不循环播放背景声音[?] | 选项 | 循环/不循环播放背景音频资源 |
暂停声音[?] | 选项 | 暂停播放某个音频资源,当再次「播放声音」时,将继续播放 |
停止声音[?] | 选项 | 停止播放某个音频资源,当再次「播放声音」时,将重头播放 |
停止所有声音播放 | 无 | 停止播放所有音频资源 |
小游戏
积木名称 | 参数 | 描述 |
---|---|---|
设置分享标题(s) | 文字 | 自定义小游戏分享标题 |
设置分享图片(http...) | 网址 | 自定义小游戏分享图片 |
设置分享参数(name=jack) | 文字 | 自定义小游戏分享参数 |
分享 | 无 | 拉起小游戏分享 |
拉起[?] | 广告 | 拉起某个广告,需要先在作品设置里面设置广告ID |
上报事件ID(branchId)类型曝光/点击参数(branchDim) | 类型;参数 | 上传到独立小游戏后使用,官方文档 |
居中/左/右 显示/关闭Banner广告(广告位ID) | banner广告ID | 在MP后台开通banner广告后可拿到ID |
上传分数(n)到排行榜 | 数字 | 上传得分到小游戏 |
打开排行榜组件 | 无 | 排行榜默认是最高层级的,且自带关闭按钮 |
设置排行榜标题(s) | 文字 | 自定义排行榜显示的标题 |
设置排行榜单位(s) | 文字 | 单位可以是分、距离、杀敌数等自定义文字 |
设置排行榜排序[?] | 选项 | 默认降序,设置排行榜升序或降序 |
设置排行榜周期[?] | 选项 | 默认为历史累计,可选每月周日更新榜单 |
触发短振动 | 无 | 使手机发生较短时间的振动(15 ms) |
触发长振动 | 无 | 使手机发生较长时间的振动(400 ms) |
显示消息提示框(提示) | 文本 | 弹窗形式 |
控制台打印(log) | 文本 | 发布到独立小游戏后在手机上使用 |
拉起小程序(appid)的页面(path) | 文本 | 拉起小程序 |
获取分享参数 | 无 | 获取参数 |