【包教包会】Shader实战——发光(外发光、内发光、描边、Spine合图处理)

逻辑上不通,从中心开始向外查找,找到边缘就是最短距离
如果不break会继续查找,最短距离就被覆盖了
你先用着,我有空找台mac试一下

好像手动创建节点也不行?
await ResMgr.loadResWithBundle(E_BUNDLE.RES, spUrl, Material).then((asset: Material) => { if (asset) { GameMgr.M_MTL = asset; } this.addPro(1, "预先加载渲染纹理"); });

let img = GameMgr.createImg(this.nFood, "shader"); img.spriteFrame = foodNode.getComponent(Sprite).spriteFrame; img.customMaterial = GameMgr.M_MTL; let cusMtl = img.node.addComponent(gi.GlowRim); cusMtl.innerActive = false;

创建出来的img不对,用预制体直接创建的就没问题

好的,期待大佬的好消息。

image
代码设置图片不显示的问题,把图片Packable设置为false就可以了
编辑器里的图不用设置,因为我在初始化的时候设置了


但是代码换新图我监听不到,只能在编辑器里手动设置Package,或者自己用代码先设置spriteFrame的package为false再赋值给Sprite
最优方案是适配Package重新计算uv,这个和支持图集帧一样
实现麻烦,反正不影响使用,等我财富自由再做吧

1赞

OK 可以

好的 主要项目开启了动态合图 图片的uv变了导致效果显示不对

是啊,这个经常会忘掉

image
版本:3.6.3
创建预制体,将GlowRim.ts和GlowRim.mtl 挂载在预制体上面
游戏脚本代码设置每个节点的图片 food.getComponent(Sprite).spriteFrame = sp;
我事先已经把要用的图片的Packable都设置为false了,为什么还是这样呢?

有先后顺序,要先添加GlowRim.mtl再添加GlowRim.ts
如果顺序反了,就右键点GlowRim.ts选择重新载入资源

按照你说的先后顺序挂载到预制体上面,用代码生成预制体,浏览器上面还是这个效果,但是在编辑器里面是正常效果。难道每个预制体的生成需要用代码先添加GlowRim.mtl再添加GlowRim.ts