结构优化
现在,我们的代码可谓是 shi 山!很混乱,让我们优化一下他吧~
(虽有古话“代码能跑就别动”)
图层管理
从代码中,我们可以看到,对图层管理的部分都是在地图中的。这不利于我们coding。
因此,我们把他放到一个新角色中。新建一个角色,名叫“图层管理”
并把它放到一个文件夹里,这个文件夹我们就叫他“后台控制”吧!
再把代码拖过去:
完成!
这时,有肝酱一定发现了,我在”图层层级“这里,加了一个”碰撞箱层“,这,就是我们之后碰撞箱的层级!
你也可以赶快把他加上哦~
广播同步
目前,我们的所有移动都是基于自制积木的
但是这有一个问题:由于scratch奇奇怪怪的运行顺序,会导致一些不同步,特别是加了碰撞箱跟随之后。
那么,我们使用“多线程”的理念,让移动和侦测同时进行!
了解多线程
多线程是指通过软件或硬件实现多个线程并发执行的技术,可提升计算机处理性能。在一个程序中,独立运行的程序片段称为“线程”,同时共享程序的资源,利用它编程的概念叫作“多线程处理”。在多线程中,程序的控制流程可以同时进行多个部分的计算和处理,从而提高程序在多核处理器上的性能表现。
看到这里,也许你有点蒙。(我也是)
那我简单的解释一下:多个程序片段同时执行,就叫做多线程
但是,在写代码的时候要注意一个问题:冲突
比如说,线程A修改变量tmp的同时,线程B也在修改
那么,就要看哪个先执行了
这时,如果产生了和变量相关的操作,那么整个操作就会错乱了。⚠️
修改代码
我们把移动x坐标的相关代码,放到广播上。
这时,移动的同时相机x也会改变了,这会防止相机反弹/卡墙。
下面,切换到地图
我们把地图的移动也放到广播里,把之前“作为克隆体启动”这个hat删掉。
变量类型注释
为了方便了解变量的类型,防止入参错误,我们引用typescript的方式,给变量添加类型注释
修改变量名:
<iframe
width="100%"
height="800px"
scrolling="no"
src="https://www.ccw.site/embed?id=bugdog-story/bugdog/lec03a&type=comment"
title="{跟着多bug的啸天犬制作剧情解密游戏 03a}"
frameBorder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
allowFullScreen
scrolling="0"
></iframe>