求助: grid 里的子节点, 夹层里有光效动画, 应该怎么让他们统一在方块下方, 阴影上方渲染

Screen-Recording-2023-08-28-at-12.30.33

另外还有一个问题, 方块 Node 在 grid 里是同一层级的, 但是用作显示的 Sprite 是方块的子节点, 这种情况下, 是不是就不会进行合批了?

有没有大佬来挽个尊啊

目测是

--node
---阴影
---光
---方块

的结构,
只要合图在一起就可以合批了

感谢大佬回复, 单方块组件是你说的这个结构
素材通过 creator 的自动图集功能打在同一张里了, 程序也开启了自动合图功能
目前 DC 在 20 以下, 问题不大
就是现在这个垫底光效的问题愁死我了, 本来阴影比方块小一点问题不大
现在这个光芒比方块要大, 还要在夹层里, 一下就暴露出问题了

方块同一个 layer, 有自己的 getSiblingIndex
可是光芒分散在不同的方块下级, 渲染顺序受上级影响, 覆盖伯伯方块, 又被叔叔方块的光芒覆盖

image

换句话说,他是从左到右从上到下不断 addChild 就可以!

试了一下, 不行, 还是会漏光, 只不过漏的方向跟原先相反
而且阴影还叠加出问题了
Screenshot 2023-08-29 at 15.02.23

现在要做就只能加层了, 方块层, 辉光层, 阴影层
硬生生把一个组件给打碎了

嗯,是得把底层单拿出来

@jare 这种需求能不能提供特性来做呀, 相同子层级的子节点有同样的渲染顺序

平级节点里头的预制体, 就是会有深度的, 引擎组可以评估一下这是否是一种常见需求

父节点可以选择让子节点在自己的 zorder 上生长,
也可以选择让子节点在自己和兄弟节点共享的一个 order 上开始生长

不然这种预制体就得拆碎了, 没有了搭积木的优势

3d项目是可以设置开启深度解决,2d貌似都是分层来解决

2.4x可以改源码,h5是cc.RenderFlow.prototype._children, 原生是NodeProxy里面的render,可以自己给节点加一个类似zIndex的属性, 前面提到的两个函数在遍历节点前,先按zIndex重新排序就可以了

真是让人望而生畏的方式 :joy:

好消息: 变卡了

可能最后还是得靠分层

有没有 TA 大佬, 请问写 shader 可不可以直接在这里描边辉光?

用了一个非常脏的方式解决了:
当方块合集排列完以后, 按阴影, 辉光, 方块的顺序遍历了 3 遍, 把这些子节点, 都移到了方块的父节点下
现在他们在节点树上成为了方块的兄弟 (究极乱伦), 并且保持着引用, 还能当子节点来控制

这里非常恶心:

  1. 方块集合本身是有 spawn 动画的, 带 Scale 的时候对 setParent 的 worldPos 保持有影响
  2. 方块集合和方块本身, 都是有 NodePool 的, unuse 的时候, 还需要把前面提到的脏东西反向操作一下

怎么说呢, 想吐… 这里非常容易出 bug

shader 应该可以