[LayaAir3]2d拖尾 首次调用拖尾的时候调用Laya.Scene.gc()后报错

 
2d拖尾 首次调用拖尾的时候调用Laya.Scene.gc()后报错
TypeError: Cannot read properties of null (reading '_mask')
    at WebDefineDatas.addDefineDatas (WebDefineDatas.js:46:30)
    at WebGLRenderelement2D._compileShader (WebGLRenderElement2D.js:42:24)
    at WebGLRenderelement2D._prepare (WebGLRenderElement2D.js:48:14)
    at WebglRenderContext2D.drawRenderElementList (WebGLRenderContext2D.js:119:21)
    at RenderManager2D.render (RenderManager2D.js:87:17)
    at Context.drawLeftData (Context.js:1146:35)
    at RenderSprite._renderNode2D (RenderSprite.js:101:17)
    at RenderSprite._transform (RenderSprite.js:196:19)
    at _FlyObj.render (Sprite.js:587:48)
    at RenderSprite.transform_drawNodes [as _fun] (LayaGLQuickRunner.js:132:21)
原因:
Trail2DRender.defaultTrail2DMaterial
材质在gc的时候会被gc掉。
 
解决方法:
需要在Trail2DShaderInit的init中
设置
 static init() {
....
let mat = Laya.Trail2DRender.defaultTrail2DMaterial = new Laya.Material();
mat.lock = true;//加上这行 防止Laya.Scene.gc 释放掉
....
}
 
 
 
 
已邀请:

LayaAir大为

赞同来自:

您好,我这没能复现您说的问题,请提供一个能复现问题的demo

要回复问题请先

商务合作
商务合作