LayerMask¶
前言¶
开始并不了解 LayerMask 的用法,看到 Physics2D 里面方法参数就是一个 int 类型,还以为是第几个图层就填数字几,况且还有 LayerMask.NameToLayer 这个方法,看方法名和返回值类型挺像那么回事,就用这个函数的返回值来填参数了。后来因为没有生效才兜兜转转发现并没有理解 LayerMask 。
官方说明
LayerMask is a bitmask. Use LayerMask.GetMask and LayerMask.LayerToName to generate the bitmask. 1
介绍¶
其实回到 Physics2D 里的方法参数就可以知道那样的理解是很有问题的,因为参数只有一个 int 类型,如果需要检测多个图层该怎么办呢?
所以说,这个 int 参数是可以表示多个类型的,而实现就是类似于 Bitmap。
一个 int 类型变量有4字节,也就是32位,从低到高,第几位为1就代表包含第几个图层。
例如:
LayerMask = 0000 0000 0000 0000 0000 0000 0000 1001
表示这个 LayerMask 包含第0层以及第3层 Layer
使用方法¶
常用的有两种方法 LayerMask.GetMask 和 LayerMask.NameToLayer,两者并不等价
简单的来说 LayerMask.GetMask("Default") 等价于 1 << LayerMask.NameToLayer("Default")
LayerMask.GetMask(string...)¶
获取的是一个 Mask 表示 Layer 集合,这个方法可以填写多个图层名
LayerMask.NameToLayer(string)¶
通过图层名来获取 Layer 在第几层