Unity学习笔记1之LayerMask的理解和应用
关于Unity的Layers
Layers正如其字面意思,区分分层所用。常用于Camrea和Light渲染场景的特定部分,或者用于射线检测时区分检测目标。
如下图所示,是unity layers的设置界面,其中前8行为unity自身使用,显示为灰色。后24行,用户可以自行使用,比如,我将Layer12,Layer19分别命名为“Player”和“Enemy”。
其实在unity中,正是用一个Int32的数据存储Layers这32层的信息。Int32在二进制中共32位,正好一一对应这(Layer0-Layer31共32层)。
LayerMask的引入
当我们使用射线检测时,为了区分检测的目标,也为了节约性能,往往使用LayerMask来告诉引擎我们的目标是哪些层。
LayerMask其实就是一个Int32的数值,它的32位对应着Layers的32层。
二进制下,第X位为1表示打开X层的检测,为0表示关闭第X层的检测。
比如,LayerMask layerMask=4096;
(4096的二进制为0000 0000 0000 0001 0000 0000 0000 0000)中,第13位为1,其他都为0ÿ