Não é possível ler camadas em Unity3d Camera Culling Mask

4

Estou usando o Unity 5.5 no Ubuntu 16.10. Eu tenho uma máscara de remoção de câmera com um conjunto específico de camadas.

No entanto, na interface do editor Unity, a lista suspensa máscara de seleção não exibe as verificações próximas às camadas que selecionei. Como resultado, quando seleciono muitas camadas, o campo lê Mixed ... e não consigo ver quais camadas eu defini a máscara a ser usada.

Quando eu registro camera.cullingMask , recebo um inteiro estranho que não consigo compreender. Como posso ver programaticamente quais camadas eu selecionei em uma máscara de seleção?

    
por David Y. Stephenson 12.03.2017 / 18:20

1 resposta

1

Eu tenho o mesmo problema no Ubuntu e nenhuma solução para o bug de marca de seleção.

No entanto, tentarei explicar o número inteiro estranho obtido da propriedade. É um campo de bits, onde cada camada recebe um valor:

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
...

(Parece que os nomes da camada do usuário podem começar em 1 ou em 8, dependendo da versão do Unity)

Você pode combinar esses valores, por exemplo, Builtin Layer 5 e User Layer 9 resultariam em 1 << 5 | 1 << 9 = 2^5 | 2^9 = 32 | 512 = 32 + 512 = 544 .

Leia mais sobre máscaras de camada na documentação.

    
por Lena Schimmel 26.07.2017 / 13:25