地图的保存与加载
欢迎来到地图的保存与加载!
为什么要保存地图呢?
因为啊,如果没有保存地图
再好看的地图下次打开也看不到了
(悲伤悲伤d皮卡丘:“你不早说啊——
我昨天画了整整999个小时的地图直接就消失了”)
你看吧,我就知道要有踩坑的
为了拯救皮卡丘
让我们先开始制作保存吧~
保存地图
首先,我们要建立一个广播消息
就叫做“保存地图”吧,简单明了
但为什么是广播消息呢? 这不得不谈到一个知识点了: 广播消息是一个帽子积木 所以,可以被任何角色和克隆体接受 包括广播信号的角色或克隆体 但是,如果接受信号的积木摆在一个角色内 如“地图”角色里 那么这个消息会被“地图”的本体和克隆体 接收到并执行里面的操作
通过这个原理 我们就可以收集“地图”角色的: 地图单元的位置,造型等信息啦
我们可以直接用多莉Pro扩展
判断是否为克隆体,来确认接收到消息的是不是克隆体
因为角色本体不需要被算在地图单元内
所以这一步需要注意
我们还需要一个列表来储存信息 切记是适用于所有角色 因为,是要把所有克隆体的信息全部储存到一个整体里 然后,让角色本体将所有地图单元的信息连成一个整体
我们要储存的信息是: 地图单元的 x坐标 y坐标 造型名称 (如图)
此时 疑惑疑惑d皮卡丘 就要问了:
“溯老师为什么要在这里用 / 隔开呢?
是有什么特殊含义吗?”
哦,你说这个啊
这是为了将:地图单元的 x坐标 y坐标 造型名称
的数字隔开方便获取这些信息
知道了为什么了,那就继续吧
我们先随便摆个地图并广播一下保存信号
可以看到:
列表出现了18个项
每一个项都对应了一个地图单元
我们下一步就是要把这么多个项压缩成一个项,便于储存
所以,我们只需要把每一个项连起来并用一个字符隔开就好了
怎么做呢?
现在的项不是一个固定的数量
可能是5项,也可能是20项
所以,我们应该重复项目数次把它的第一项和第二项连起来
然后删除第二项
记得要删除第二项!
否则就会出现这种情况
点击一下试试
很好,压缩成功!
但你应该发现了
这样压缩会需要一点时间
如果我想让它一瞬间压缩好要怎么办?
抢答抢答d皮卡丘:“我知道,我知道!是自制积木!”
真聪明~
打开运行时不刷新屏幕,所以记得
放到刚刚的积木块上
但目前还有一个问题:什么时候对地图进行保存呢?
总不能每一次都要手动点击一次吧
什么时候保存地图
我们这里有个思路
在这里的接收信号
可以被克隆体和角色本体接收
角色本体固定是一个,克隆体有很多个
而我们的克隆体是作为地图单元的
所以我们可以用唯一的角色本体来管理数据的储存
将之前的地图单元数据上传改一下:( 如果 那么 否则 部分)
因为,角色无非就两种状态:
不是克隆体就是角色本体
所以,否则部分的执行者:一定是角色本体
这样,我们直接用角色本体压缩地图就好啦
当然,先别着急
压缩肯定是要在地图单元把信息上传后再压缩
所以,我们要在接收到信号后等一会再压缩
保存部分搞定!
拆分数据
接下来是拆分部分
和保存部分有些相似
先将,压缩好的信息拆分成一个个地图单元的信息
再由,本体移动到信息中的位置进行克隆
为了方便,我们再创建一个消息
但这次,只用角色本体操作就好了
下一步操作,光是想可能会有点复杂:
怎么把已经拼接好的字符串按“#”字符拆开?
针对这种问题,我们的解决方法是...
用扩展!(拜托,多记扩展真的很有用awa)
我们需要的是这个(如图)
(如果不理解可以先去试试这个扩展)
发现了吗?以xxx切割字符串
这正是我们需要的,让我们试试
很好,确实是我们需要的
如果用上这个积木,那么效率就快了很多
(不信你看旁边的 皮卡丘 ,他用的可起劲了)
结合之前自制积木的经验,这里面会用到重复...次
所以,让我们继续创建自制积木!
记得勾选运行时不刷新屏幕!
此时 困难困难d皮卡丘 提了一个问题:
“哎,等一等
刚刚的切割字符的积木后面的选择框是什么意思啊?”
好吧,既然皮卡丘都问了
让我们进一步了解下便利积木扩展
便利积木扩展
拿出刚刚的积木,这有一个选择框,是什么意思呢?
若越界则...
也就是切割的数超过了原本的范围
举个栗子:
1#2#3,取第一项是1、第二项是2、第三项是3
但第9999项呢?
也是3,如果取第四项的话也是3,为什么?
注意后面的若越界则返回最后项,顾名思义,就是会返回到最后一项——3
那再改改?返回空字符?
可以看到,确实是空了
利用这个原理可以干嘛呢?
我们可以知道拆分到什么时候就已经把所有项拆完了
就此原理,我们还需要一个私有变量:
用于遍历地图的每一个项
这么说可能会让 皮卡丘 摸不着头脑
(没头没脑d皮卡丘:“什么,我还有脑子?”)
所以我们要讲的详细一点:
首先,按上面的积木
私有1为多少,就取第多少的地图单元信息
而且私有1可以改变,可以是12345...
我们让 私有1 每次改动
都将第 私有1 的地图单元信息加入列表
如果,返回的字符为空就停止
(如图)
相信聪明的你一定理解了
所以我们直接点击下这个积木块试试吧~
很好,可以看见成功拆开了
但不要忘记把拆分前的那一个项给删掉
然后通过之前的便利积木移动到对应位置克隆就好了
(如图)
让我们重新运行试试
如果可以正常摆出地图,那就是没有问题了~
但是,目前还没法在摆地图时放置积木
所以我们可以写一点地图块切换的积木
这里设定的是空格下一个造型和b上一个造型
当然可以通过自己喜好判断
<iframe
width="100%"
height="800px"
scrolling="no"
src="https://www.ccw.site/embed?id=sumiu-jump/sumiu/Lec03c&type=comment"
title="{跟着溯μ制作平台跳跃游戏 03c}"
frameBorder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
allowFullScreen
scrolling="0"
></iframe>