项目设置->物理->碰撞矩阵->碰撞组 修改名称报错
![]()
[Window] Cannot read properties of undefined (reading ‘find’)
TypeError: Cannot read properties of undefined (reading ‘find’)
at VueComponent.saveEdit (D:\Apps\CocosEditors\Creator\3.8.6\resources\app.asar\builtin\project\dist\contributions\project-physics.ccc:1:1782)
at click (eval at createFunction (D:\Apps\CocosEditors\Creator\3.8.6\resources\app.asar\node_modules\vue\dist\vue.js:11632:18),
1543)
at invokeWithErrorHandling (D:\Apps\CocosEditors\Creator\3.8.6\resources\app.asar\node_modules\vue\dist\vue.js:3700:32)
at Kt.invoker (D:\Apps\CocosEditors\Creator\3.8.6\resources\app.asar\node_modules\vue\dist\vue.js:1529:22)
at Kt. (D:\Apps\CocosEditors\Creator\3.8.6\resources\app.asar\node_modules\vue\dist\vue.js:8013:37)
at Kt.sentryWrapped (D:\Apps\CocosEditors\Creator\3.8.6\resources\app.asar\node_modules@sentry\browser\cjs\helpers.js:93:17)
没有引入,非常抱歉,这个没有注意到。
0731版本似乎在给自定义shader的 material.setProperty 不应用,缓冲池回收后再次使用才应用。
0702版本没有问题。
@ccclass('CustomMaskRect')
@executeInEditMode
export class CustomMaskRect extends Component {
_sprite: Sprite = null;
@property
private _center: Vec2 = v2(0, 0);
@property
public get center(): Vec2 { return this._center; }
public set center(v: Vec2) { this._center = v; this.refreshMaterial(); }
@property
private _size: Size = size(200, 100);
@property
public get size(): Size { return this._size; }
public set size(v: Size) { this._size = v; this.refreshMaterial(); }
@property
private _softEdge: number = .02;
@property({ slide: true, range: [0, 20, .001] })
public get softEdge(): number { return this._softEdge; }
public set softEdge(v: number) { this._softEdge = v; this.refreshMaterial(); }
@property
private _cornerRadius: number = 10;
@property
public get cornerRadius(): number { return this._cornerRadius; }
public set cornerRadius(v: number) { this._cornerRadius = v; this.refreshMaterial(); }
protected onLoad(): void {
this.refreshMaterial();
}
refreshMaterial() {
if (this._sprite == null) this._sprite = this.node.getComponent(Sprite);
if (this._sprite == null || this._sprite.spriteFrame == null) return;
let material = this._sprite.getSharedMaterial(0);
if (material) {
material.setProperty('param0', v4(this.center.x, this.center.y, this.size.width, this.size.height));
material.setProperty('param1', v4(this.softEdge, this.cornerRadius, 0, 0));
}
}
update() {
EDITOR && this.refreshMaterial();
}
}
最新版本调用无效:(0702这么写没问题)
let maskNode = ResourceHelper.CustomMaskRectPool.getNode();
maskNode.setParent(this.node);
let rect = maskNode.getComponent(CustomMaskRect);
let pos = this.stage2d.gamePanel.itemFrozenButton.node.worldPosition;
rect.center = v2(pos.x, pos.y);
rect.size = size(300, 300);
rect.cornerRadius = 30;
试试看这个pr?
3.8.7 20250702版本,在设置active的时候会报错,报错的概率还是很大。 setNodeActivity 时通过 toggle切换回调用到。
private setNodeActivity(node: Node, active: boolean) {
if (node && isValid(node.active)) {
node.active = active;
}
}
TypeError: Cannot read properties of null (reading ‘0’)
at e.updateUVs
at i._flushAssembler
at i.__preload
at i.__preload
at eval (eval at WE \u003canonymous\u003e
65)
at e._invoke
at i.invoke
at e.activateNode
at i.set
at r.setNodeActivity
能否给一下 demo 呢?我这边测试能正常,或者录制一下复现的视频
预制体,点更新到资源就会导致引用该预制体的地方丢失引用,还得重新拖拽,一直没修复
点击更新到资源时,控制台有警告吗,或者你拖入的引用是嵌套的
复现不了了,奇怪
稳定复现的,这个问题。在场景中编辑,挂一个脚本,脚本上放一个meshrender或者啥的,然后吧这个节点上的mesh拖到这个slot上,保存为预制体,就会看到slot 引用丢失了
你拖到 slot 上时,控制台有警告吗?
ps:空闲时,给个 demo 吧
assets.zip (7.5 KB) 先把FullWater的meshrender放到node上的脚本的render slot里面去。然后把node拖成一个预制体。就发现hierarchy里面的预制体的node上的脚本render slot引用丢了 。engine 3.8.7
你好,感谢反馈。这个是因为同步了 spine c++的官方代码
3.8最新的代码要求slot需要有对应的attachment,可以看下官方代码
第 484 行的逻辑是官方新增的。
所以针对这个问题,如果你觉得对你有影响,可以修改对应文件,然后自己重新编译wasm 替换目标文件






