-
Creator 版本:3.0
-
目标平台: Chrome 浏览器
-
重现方式:
我有个预制体变量,blockPrefab,想用instantiate基于它创建一个节点,语句如下:
let blockNode = instantiate(this.blockPrefab);
然后提示blockNode 的类型是Prefab,而不是预期的Node 类型,请问是咋回事? -
首个报错:
-
之前哪个版本是正常的:
-
手机型号:
-
手机浏览器:
-
编辑器操作系统:
-
重现概率:



我通过在this.blockPrefab 后面加个感叹号解决了
1赞
为啥要加感叹号
你的 this.blockPrefab 确定是预制体的话 instantiate出来不可能不是node 啊, 和 感叹号没关系, 有可能是代码其它的问题或者什么吧, 最好你仔细研究一下, 加感叹号才能是node是真没见过
你在声明属性的是否说明了blockprefab有可能是空 你在用instantiate要做下非空判断就可以了
@property(Prefab)
bullet:Prefab = null!;
let node = instantiate(this.bullet);
***.addChild(node);
要加是因为引擎里是这么声明 instantiate 的(多个签名):
// Prefab 类型实例化出来是 Node
function instantiate(prefab: Prefab): Node;
// 其他类型实例化出来是该类型本身
function instantiate<T>(t: T): T;
Prefab | null 满足下面那个签名,所以返回的是 Prefab | null。
1赞
