【CocosCreator3.x】图片不显示了?节点添加了没有显示?

最近老是遇到在Cocos Creator 3.x版本的节点显示问题。

  • 我明明添加了节点,也挂载了精灵Sprite,但是为什么在web预览没办法显示呢?
  • 我明明动态创建了预制体界面,也挂载到父节点上了,日志log打印出来了,为什么不显示呢?

同样的设置,我在Cocos Creator 2.4.x版本上,显示是正常的?这一切是why 为什么呢?

Reason:

Cocos Creator 3.x 版本,默认在层级管理器上,添加Node节点的层级 layer 是DEFAULT的。
在这里插入图片描述
默认的场景下,是只包含一个 Main Camera 主摄像机(因为不在Canvas下,这边默认是设置为了3D摄像机) 和 一个 Main Light 主光源。主摄像机 Main Camera的可见性掩码 visibility 默认勾选 可见 UI_3D & IGNORE_RAYCAST & DEFAULT。因为没有勾选UI_2D,所以如果设置层级为UI_2D的 节点,不会被该摄像机渲染(即不可见)。
在这里插入图片描述
如果添加的是UI节点或者渲染节点,则默认创建Canvas画布,并动态添加UI的摄像机,后添加UI节点挂载到Canvas下。此时UI节点的layer是UI_2D,动态添加的UI摄像机的 可见性掩码 visibility 默认勾选 可见 UI_2D & UI_3D。
在这里插入图片描述
想必看到这里,也知道上面的原因了。

如果需要正常显示需要怎么做?

  • 需要在Canvas下挂载UI组件或者渲染组件的节点,而且需要设置节点的layer为UI_2D。因为Canvas下的摄像机的可见性掩码默认值开启了UI_2D 和 UI_3D,导致除了UI_2D 和 UI_3D以外的层级节点,被该2D摄像机渲染剔除了。如果需要自定义节点的layer 比如wall,想要在2D摄像机上渲染 层级为wall的节点,那么你需要在2D摄像机的 可见性掩码 visibility 勾选 wall。

动态加载的预制体,为什么看不见了?

  • 是因为动态加载的预制体或者动态创建的节点 new Node(),默认的layer是DEFAULT导致的。需要手动代码设置 node.layer = Layers.Enum.UI_2D,因为默认的2D摄像机的可见范围是 UI_2D 和 UI_3D,如果你修改了可见性掩码,那就需要做对应的修改了。

那Cocos Creator2.4.x为什么没有这个问题?

  • 因为默认创建的节点是default,相机camera默认是勾选了 default。因为Cocos Creator 3.x 整合了2D 和3D ,为了让用户更加容易区分2D和3D,且更加合理的管理节点层级(是为了做渲染剔除),所以做了不同的层级layer默认导致的。
  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值