就是当把调用子弹销毁的方法后,就提示报错。排查了几个方向,最后发现是跟子弹发射速度有关
当不调用”循环发射“函数时,游戏正常运行(不过这样就只发射了一颗子弹);或者将子弹发射的间隔拉长,然后在快速移动开,让第二颗子弹不要打到已经爆炸的飞机,这样也可以正常运行(但是这样子弹发射速度太慢了)
请问各位老师,这是什么问题呢?要怎么改?
就是当把调用子弹销毁的方法后,就提示报错。排查了几个方向,最后发现是跟子弹发射速度有关
当不调用”循环发射“函数时,游戏正常运行(不过这样就只发射了一颗子弹);或者将子弹发射的间隔拉长,然后在快速移动开,让第二颗子弹不要打到已经爆炸的飞机,这样也可以正常运行(但是这样子弹发射速度太慢了)
请问各位老师,这是什么问题呢?要怎么改?
看报错信息可以setparent前先判断一下节点是否可用,发生的原因可能是上次销毁时没有回收节点你自己好好找找吧
计时器没清掉
为什么大大的一个 update(){}方法不用呢?
很明显的。。。
又要什么secudule,又是什么once,各种闭包,你的小心脏不疼么;
看到吐血,天才来了也调试不了。。。
以前我也觉得update()风险很大,不要轻易用,结果越来越发现,update()是最靠谱的,官方不靠谱也是看跟谁比,相对,999.9%的几率是稳定的,其他一坨一坨是什么鬼。。。。
typscript兼顾了c#的强命名,又有javascript写法的灵活,结果就是针无两头利,且不说两头不讨好,调试就是一个大问题,(个人觉得还是8成javascript,2成c#比较好,那么问题来了,资深的不如直接用javascript好了,反正都懂不会写错代码,就不需要调试了)
你这个问题,在schedule()方法内,添加try catch大概能看到是什么问题
您好,那请问我要怎么清除计时器呢?我的“计时器”是加在了飞机上,但是“碰撞判断”是在“子弹”上。
要用一个function函数传给timer,才能取消
this.timer = function () {
if (this.count == 5) {
// 在第六次执行回调时取消这个计时器
this.unschedule(this.timer);
}
this.doSomething();
this.count++;
}
定时器执行:
this.schedule(this.timer, 1);
报错的原因是,你销毁了子弹,但是子弹还在移动,拿不到子弹节点,就报错。
解决:
1.销毁清除定时器
2.在定时器内做一个isDie的变量做判断,为true就return,销毁前设置isDie=true