Prefab 添加帧动画后的 Sprite Frame 显示问题

我正在做一个飞机大战游戏的demo,敌方的飞机我是用的 Prefab 预制资源创建的,我在敌方飞机与玩家子弹的碰撞检测后 给敌方飞机添加了动画,监听动画(FINISHED)完成后删除敌方飞机节点,这样的逻辑,

飞机正常击中敌机是没有问题的,能正常播放帧动画,然后播放完成后消失

但是现在出现的问题是,只要我子弹有碰撞过敌方飞机,播放过这个爆炸帧动画,后续的飞机某些会随机出现一些图片资源(Sprite Frame)错乱


并没有任何子弹碰撞到这些敌方飞机,而且他是从创建出来的时候就是这个图片,这个图片也就是我爆炸动画的最后一帧

而且子弹是对这种元素攻击无效的,我就没懂这是为啥,我刚学了一周左右的cocos;
我刚开始以为是因为,敌方飞机在播放爆炸帧动画的时候节点还没消失,造城反复创建动画影响到的,所以我是有给一个布尔值来控制是否需要播放动画,我看了下日志打印也是正确的,并不会创建很多次播放动画
现在结果是只要有执行过爆炸的帧动画,那么后面就一定会开始随机出现这种资源显示错乱的情况

如果是没有使用子弹碰撞过敌方飞机的话且没有播放过爆炸动画的话,那么是不会出现这种情况的

你在将被击中的飞机放回节点池之前应该重置一下其spriteFrame

好的好的,我之前也有想过在start的时候再把他的spriteFrame给重新设置下,但是这个资源是个Prefab,我没有使用 @property 来从外部获取到 spriteFrame资源,我想请问下这个只能从外部将spriteFrame资源传进来或者采用路径引入的形式拿到图片资源再给其重置吗?还是说有另外的方法可以直接初始化元素呢

我看到文档中有一个 reset 的方法,使用了下报错了,貌似不能这样子做哈

不知道你啥版本,3.6可以设置缓冲池处理组件的回收和复用函数。

不管版本,可以在预制体脚本里弄个函数重置精灵图片。在putNode前调用一下该函数。