cocos / cocos-engine

Cocos simplifies game creation and distribution with Cocos Creator, a free, open-source, cross-platform game engine. Empowering millions of developers to create high-performance, engaging 2D/3D games and instant web entertainment.
https://www.cocos.com/en/creator
Other
8.13k stars 1.93k forks source link

多摄像机在原生环境下渲染异常 #16862

Open a1076559139 opened 6 months ago

a1076559139 commented 6 months ago

Cocos Creator version

3.8.2

System information

IOS必现 Android未知

Issue description

场景中有两个相机(都被添加为常驻节点)

有一个相机不负责渲染,只是为了清空颜色、深度与模板缓冲。 D-Chat_20240403185134

另一个相机负责渲染UI D-Chat_20240403185145

这样做的目的是为了,某些UI中如果使用相机的话,不用费心去维护到底自己的相机是不是第一个渲染的(因为第一个相机最好把clearFlags设置为SOLID_COLOR,而如果不是第一个相机则几乎一定不能设置为SOLID_COLOR)

这样做之后,在原生环境会黑屏,无法显示任何UI,也没有报错

Relevant error log output

No response

Steps to reproduce

测试项目地址

Minimal reproduction project

No response

a1076559139 commented 6 months ago

后面继续测试发现,原生环境(只测试了IOS)多Camera表现与Web/小游戏不一致。 Web/小游戏正常,原生却会出现黑屏、画面残留等情况。

a1076559139 commented 3 months ago

@minggo 我今天无意间测试,终于知道是怎么引起的了。 原因有个相机的Priority属性在编辑器内显示为0,但其实它实际的在.scene中存储的值是-1,运行时打印log,显示也是-1,把它正确的设置为0就没这个渲染异常的问题了

minggo commented 3 months ago

谢谢这个信息。

原因有个相机的Priority属性在编辑器内显示为0,但其实它实际的在.scene中存储的值是-1

相机是新建出来没改动,还是有什么操作呢?

a1076559139 commented 3 months ago

是以前创建的,3.6版本甚至更早的版本,具体记不清了

GengineJS commented 3 months ago

企业微信截图_17205086714802 @wuzhiming

dumganhar commented 3 months ago

这个问题跟多相机没有关系,复现方式是:

  1. 新建一个场景
  2. 修改相机 priority 为 -1
  3. 保存,编辑器会把 priority 的 edit框内的值显示为 0,但是实际序列化到 .scene 中,还是 -1
a1076559139 commented 3 months ago

这个问题跟多相机没有关系,复现方式是:

  1. 新建一个场景
  2. 修改相机 priority 为 -1
  3. 保存,编辑器会把 priority 的 edit框内的值显示为 0,但是实际序列化到 .scene 中,还是 -1