关于对象池的两个疑问

比如我初始生成了10个子弹的对象池,但是后来实际中不够用又实例化了一个,一共11个对象,然后销毁的时候10个put回对象池,另一个实例化出来的节点销毁掉。但是我怎么判断哪些是对象池里取出,哪个不是对象池取出的?是要生成子弹的时候给子弹代码加个变量来判断吗?
还有对象池的定义是不是得放在常驻节点的代码上进行?(就是游戏中不被销毁的节点)。打比方,如果我在敌机代码里定义了子弹的对象池,一旦敌机被销毁,它建立的对象池是不是一并被销毁了,那它的子弹就没法回收到对象池了?

对象池里干嘛不多放点子弹?而且我觉得应该所有敌机共用一个对象池。几种子弹就建立几个对象池吧?

1:池子里面10个子弹,又实例化一个,首先操作应该是放到池子里面,然后再用,也就是池子现在管理11个子弹。
2:既然用了对象池,对象池的层级要稍微高一点,不会在敌机代码里面定义,难道你的敌机只会实例化一个么(boss倒是可以)?所以池子应该随着敌机管理类定义,或者完全是游戏一个模块,和敌机没关系。

1、对象池假设容量就是10个,使用中超出容量,所以另外从预制件实例化了一个,那个不是从池子取的,当然销毁时也不能放到池子里去吧,不然池子不溢出了。所以销毁时要判断一下哪个不是池子里取出的。
2、那是不是可以把对象池建立成全局的,前面加 globalThis 这样每个节点都能访问,并且每个节点的销毁都不会影响到对象池。

节点不用的时候,直接Pool.put(item)不就行了。这样池子里面就会有11个了,以后还可以在用。

明白了,是动态来扩展池子的容量,用到多少,池子就扩张到多大是吧,那样回收就都一样了