node.zIndex和node.setSiblingIndex都无法设置渲染顺序

image
有什么注意事项吗,我设置了没效果。想要绿色的在后面显示

1赞

setSiblingIndex 设置当前节点在父节点的 children 数组中的位置,所以设置的值不该超过子节点数,如果 woca2置于底部,执行下面这句就行
this.node.setSiblingIndex(0);

试过了,0和1互相交换设置都没能改变渲染顺序,zIndex也是没效果。对了,这两个物体不是父子关系。

给个demo吗?

不能发,这个不是自己的项目。其实我就是往场景里创建两个Cube,设置了一下scale,然后在脚本里设置了一下zIndex。

你说的是3D节点,设置this.node.position移动z轴坐标即可

我最终会把一大一小两个平面重叠放置。贴在一起的时候会出现闪烁的情况,所以要设置渲染顺序。这以前我用three.js做很简单设置一下renderOrder就行了。cocos文档里我找了半天楞是没找到。
image

这个可以通过配置材质的 DEPTH_BIAS 属性设置深度偏移值来优化。

作用不大,而且不能指定谁在前谁在后。希望你们可以做个设置渲染顺序的功能。我觉得这玩意还是挺常用的。

控制渲染顺序的功能已经有,你可以修改材质的priority参数

priority:RenderStage 在 RenderFlow 中的执行顺序。

文档有提到
https://docs.cocos.com/creator/3.1/manual/zh/render-pipeline/user-pipeline.html#renderstage-中的属性和方法

1赞

zindex是针对同父节点下同层节点的排序

image
不知道是不是这样设置,没有效果。

在材质面板中配置即可

我材质是用脚本创建的,new cc.Material(),每个物体的材质都不一样。

好的,代码可以这样设置

let spr = this.getComponent(SpriteComponent);
spr?.material?.overridePipelineStates({ priority: 128 }, 0);

可行。顺便问一下,模型的法线在模型创建并加入场景后还能修改吗。

该主题在最后一个回复创建后14天后自动关闭。不再允许新的回复。