【Laya2.0引擎踩坑笔记 03】—— 异常报错的坑

1. TS的坑
定时器、tween里面的参数执行域caller,切记要提前用self记录,如下图,定时器、tween里面的参数执行域caller,切记要提前用self记录,如下图,
比如退出这个类时候清理掉了所有的定时器和tween动画

Laya.timer.clearAll(this);
Laya.Tween.clearAll(this);

而下图中的this指的是自己的函数,而清理定时器的这个this指的是当前类,因此当退出这个类时,虽然清理掉了所有的定时器,但此处的定时器并未关闭,这个地方依然会报错 “Cannot read property ‘localPositionX’ of null”

【Laya2.0引擎踩坑笔记 03】—— 异常报错的坑
2.多个客户端同步的问题
*本地数据基本是控制玩家客户端,服务端返回的数据基本是多个客户端通用
所以要避免在多端工用的代码里修改或者使用本地数据。*比如
捕鱼项目中,有个本地数据LockedFishID,用来记录锁定攻击的鱼的ID。
①玩家客户端A根据LockedFishID向不断服务端发送攻击这个ID的鱼的请求 ②服务端对所有玩家客户端A\B\C\D广播攻击这个ID的鱼 ③A\B\C\D收到请求回复后进行逻辑处理,如果在此处修改了LockedFishID,那玩家A的攻击请求就会受影响。
玩家A锁定攻击鱼ID1时,玩家B也在锁定攻击鱼ID2(都是控制LockedFishID),此时A打死了一条鱼,这时在鱼死亡逻辑(多端的公用代码)里面将LockedFishID置为空,这时B的锁定攻击状态就会断开(B一脸闷逼)