无法读取 Unity3d 相机剔除遮罩中的图层

无法读取 Unity3d 相机剔除遮罩中的图层

我在 Ubuntu 16.10 上使用 Unity 5.5。我有一个带有一组特定图层的相机剔除遮罩。

但是,在 Unity 编辑器界面中,剔除遮罩下拉菜单不会在我选择的图层旁边显示勾选。因此,当我选择的图层过多时,该字段会显示Mixed ...,而我看不到我设置遮罩使用哪些图层。

当我登录时camera.cullingMask,我得到了一个我无法理解的奇怪整数。我如何以编程方式查看我在剔除蒙版中选择了哪些层?

答案1

我在 Ubuntu 上遇到了同样的问题,并且没有解决复选标记错误的方法。

不过,我会尝试解释奇怪的整数您可以从属性中获得。它是一个位字段,其中每个层都分配有一个值:

Layer name       | Layer Number | Mask value
Builtin Layer 0  |            0 | 1 << 0 =     1
Builtin Layer 1  |            1 | 1 << 1 =     2
Builtin Layer 2  |            2 | 1 << 2 =     4
Builtin Layer 3  |            3 | 1 << 3 =     8
Builtin Layer 4  |            4 | 1 << 4 =    16
Builtin Layer 5  |            5 | 1 << 5 =    32
Builtin Layer 6  |            6 | 1 << 6 =    64
Builtin Layer 7  |            7 | 1 << 7 =   128
User Layer 1 / 8 |            8 | 1 << 8 =   256
User Layer 2 / 9 |            9 | 1 << 9 =   512
...

(似乎用户层名称可能从 1 或 8 开始,具体取决于 Unity 版本)

您可以组合这些值,例如Builtin Layer 5User Layer 9将导致1 << 5 | 1 << 9 = 2^5 | 2^9 = 32 | 512 = 32 + 512 = 544

有关图层蒙版的更多信息在文档中。

相关内容