Unity 6.3
0 онлайн 102 гостей 3 в системе
Вход
GameObjects Шаг 37 из 56

Введение в layerMasks

Каждый GameObject существует на одном слое, но Unity и APIs, которые позволяют определить, на какие слои влияет API, не используют слои напрямую. Вместо этого они используют layerMasks.

A layer является стандартным целым числом, но layerMask является целым числом, отформатированным как битовая маска, где каждое 1 представляет собой слой для включения, и каждый 0 Это означает, что вы можете передавать слой к другому слою, но не можете передавать слой API которая ожидает layerMasks и скрипт все равно будет компилироваться, потому что слои и layerMasks используют один и тот же базовый тип. API вызов не произведет ожидаемого поведения.

Например, если вы хотите выполнить RayCast против GameObjects на слое 9, если вы передаете 9 в вызов Physics.Raycast как layerMask, Unity фактически выполняет отображение луча против GameObjects на слоях 3 и 0. Это потому, что двоичное представление 9 является 00001001 и если вы интерпретируете это как маску, то 1находятся в месте слоев 3 и 0.