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