creator3.0 怎么通过代码动态修改节点图层,节点的layer是number类型,我怎么知道哪个值代表什么图层

整理一下其他引擎修改图层的方法

creator2.0 可以 this.node.group = “图层名”

unity 有图层类型LayerMask
可以 LayerMask layer = 1 << LayerMask.NameToLayer(“图层1”) | 1 << LayerMask.NameToLayer(“图层2”);

Laya 有 sprite3d.collisionGroup = Laya.Physics3DUitls.COLLISIONFILTERGROUP_CUSTOMERFILTER1; // 或者其他图层

目前creator3.0 节点就丢了个属性 layer:number, 怎么知道那个图层的值是什么啊,也没有unity那种LayerMask对象,根本改不了节点的图层,难道要这样写this.node.layer = 1,2,3,4,5;?这没法识别图层啊

参考代码:

https://github.com/cocos-creator/engine/blob/b8a56aba6a68cfb56ca7ef8d45eb86582cfc637a/cocos/core/scene-graph/layers.ts#L35

比如你要设置 A 节点的 layer 为 Layers 设置里的第一个。那么参考代码就是:

this.node.layer = (1 << 0);
1赞

用自带的图层没问题,如果我新加一个图层,如Enemy层,这个层的值是什么,因为没提供方法可以通过图层名称获取图层的值,新图层根本无法用。为什么不能像unity一样提供一个LayerMask.NameToLayer(“图层1”)这样的函数来获取图层的值呢

import {Layers} from 'cc';
node.layer = Layers.Enum.UI_2D;
2赞

IDE中切换Layer,有选择是中修改节点自身,还是连同修改子节点。代码node.layer怎么修改子节点,我是一个Fbx,子节点比较多

请问解决了么

做一个节点及其 children 的递归设置,类似:

2赞