cocos2.34升3.X没办法New 一个节点对象池,没有new NodePool();组件

傲游截图20210621133208 snap_screen_20210621133247


上面 import 里面加上 NodePool ;

1


大佬多谢,但一个问题解决了新问题又来,
我想将实例化的enemy 导进对象池中,发现prefab属性不能赋值到Node节点上,我强制as node说没那对应属性。
另外还有一个问题 ,这样也报错,也强制也不行。

因为instantiate()这个函数 根据形参类型提供了两个instantiate(),
如果是prefabA:Prefab | null = null;这种声明并初始化,后续须要instantiate(prefabA!)这种形式才能告诉引擎你用的是哪个instantiate().
很多情况报错说该值可能为空的位置,在你知情的前提下,可以在其后附带!号,或者是?号也就是可选链的方式修改。

害,还是会报错的,我已经放弃纠结这个问题了,报错就报错的吧。

一个月了。还有哪报错?

去掉严格模式

就这个问题就有2种改进方式:
方式1 const enemy = instantiate(this.addDialog)!; 这种,把instantiate的返回值强制为Node类型;
方式2 template.put(enemy!); 把enemy的 Node | null 类型强制为 Node类型

方式1改为:const enemy = instantiate(this.addDialog!); 返回值就是个Node类型。

嗯,他上面定义了 this.addDialog 是Prefab | null 有可能是空的, this.addDialog! 可行

再者如果怕麻烦, 直接在定义的时候

@property
public addDialog !: Prefab; 这样子试试

依旧不行的,运行是没有丝毫问题的,但就是绕不过typescript的检测。

该主题在最后一个回复创建后14天后自动关闭。不再允许新的回复。