Sprite空间优化
- 已完成的工作:我们已经建立了一个系统来节约Sprite空间,但仍有一些问题需要解决。
- 待开发工具:我们需要开发一个工具来创建Sprite,并处理动画和压缩问题。
代码优化实例
- 压缩二维数组:我展示了一个名为
split2d
的函数,用于压缩二维数组,从而节省代币(游戏中的资源单位)。 - 修复滚动bug:解决了X轴滚动时出现的“传送门”bug,通过调整滚动逻辑和添加死区来避免不必要的段落删除和重生。
function split2d(s)local arr=split(s,"|",false)for k, v in pairs(arr) doarr[k] = split(v)endreturn arr
end
xscroll=mid(0,(px-10)/108,1)*-16debug[2]=xscroll
粒子系统优化
- 重构粒子权重:我重构了粒子系统的权重计算,将粒子的年龄作为单一变量来同时控制粒子的显示时机和动画。
- 颜色动画:在绘制函数中添加了颜色动画,使得在不需要显式定义颜色的情况下也能实现粒子的颜色变化。
for i=1,spokes do--spawn blobslocal myang=ang+step*ilocal dist=7+rnd(3)local dist2=dist/2add(parts,{draw=blob,x=ex+sin(myang)*dist2,y=ey+cos(myang)*dist2,r=2,tor=rndrange(4,7),tox=ex+sin(myang)*dist,toy=ey+cos(myang)*dist,sx=0,sy=edrift,age=-ewait,maxage=emaxage,onend=eonend,spd=espd,ctab=ectab,ctabv=rnd(5)}) endadd(parts,{draw=blob,x=ex,y=ey,r=2,tor=7,sx=0,sy=edrift,age=-ewait,maxage=emaxage,onend=eonend,spd=espd,ctab=ectab})
end
