版本差异

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
攻略:dataarray [2024/01/31 14:15] – 增加一处有关Iterate操作的描述 Ghastasaucey攻略:dataarray [2024/02/04 23:53] (当前版本) – [Iterate] Ghastasaucey
行 83: 行 83:
 尽管不是DataArray的操作,但是几乎所有的DataArray都有对应的迭代所有元素的方法(不会迭代到mNextKey位置为0,即已经释放掉的对象)。 尽管不是DataArray的操作,但是几乎所有的DataArray都有对应的迭代所有元素的方法(不会迭代到mNextKey位置为0,即已经释放掉的对象)。
  
-mMaxUsedCount在此使用,用于确定迭代的范围。顺序为从序号0遍历到序号最大,原版大部分遍历按照此顺序遍历,在无尽有关的交流中,由此产生的现象常被解释为“栈位”,但实际上DataArray的结构贴近数组而非栈,符合栈后入先出特点的地方仅体现在后释放的对象位置先重复利用+mMaxUsedCount在此使用,用于确定迭代的范围。顺序为从序号0遍历到序号最大,原版大部分遍历按照此顺序遍历,在无尽有关的交流中,由此产生的现象常被解释为“栈位”,这可能是由于其后释放的对象位置先重复利用,其符合栈后入先出的特点。不过DataArray本身结构更贴近数组而非栈
  
 对于植物、僵尸、子弹、物品,也会排除掉已经死亡但是没有调用过Free方法的对象。 对于植物、僵尸、子弹、物品,也会排除掉已经死亡但是没有调用过Free方法的对象。
行 89: 行 89:
 ===== 使用情况 ===== ===== 使用情况 =====
 原版对于以下对象的管理均使用了DataArray: 原版对于以下对象的管理均使用了DataArray:
-* 植物(Plant) +  * 植物(Plant) 
-* 僵尸(Zombie) +  * 僵尸(Zombie) 
-* 子弹(Projectile) +  * 子弹(Projectile) 
-* 物品(Coin) +  * 物品(Coin) 
-* * 与植物,僵尸等不同,除了游戏关卡界面外,商店界面也使用DataArray来管理物品 +  ** 与植物,僵尸等不同,除了游戏关卡界面外,商店界面也使用DataArray来管理物品 
-* 小推车(LawnMower) +  * 小推车(LawnMower) 
-* 场地物品(GridItem) +  * 场地物品(GridItem) 
-* 粒子对象(TodParticleSystem) +  * 粒子对象(TodParticleSystem) 
-* 粒子发射器(TodParticleEmitter) +  * 粒子发射器(TodParticleEmitter) 
-* 粒子(TodParticle) +  * 粒子(TodParticle) 
-* 尾迹(Trail) +  * 尾迹(Trail) 
-* 动画(Reanimation) +  * 动画(Reanimation) 
-* 连接件(Attachment) +  * 连接件(Attachment)
 ===== 游戏漏洞 ===== ===== 游戏漏洞 =====
 游戏内在保存DataArray时,只保存了mBlock,mSize,mMaxUsedCount,mFreeListHead。 游戏内在保存DataArray时,只保存了mBlock,mSize,mMaxUsedCount,mFreeListHead。
  
 这导致可以利用退出重进的方法刷新mNextKey,从而在游戏内建立错误的联系。可以用此方法实现缠绕海草抓取飞贼僵尸、舞王僵尸绑定非伴舞僵尸等效果。 这导致可以利用退出重进的方法刷新mNextKey,从而在游戏内建立错误的联系。可以用此方法实现缠绕海草抓取飞贼僵尸、舞王僵尸绑定非伴舞僵尸等效果。
  • 最后更改: 14月前
  • Ghastasaucey 修改