Unity的Layer其实是用一个int32的二进制来标识这总共32个层的。如图所示:
所以在使用 Physics2D.Raycast(Vector2 origin,Vector2 direction,float distance,int layerMask)的时候第四个参数layerMask就是这个int32的值。
比如,如果让射线只检测UI层,那么就这样
Physics2D.Raycast(origin,direction,distance,1<LayerMask.NameToLayer( "UI" ))
就意味着传进去的是二进制00000000000000000000000000100000,
如果想检测Water和UI两层的话,就用位运算
Physics2D.Raycast(origin,direction,distance,1<LayerMask.NameToLayer( "UI" ) | 1<LayerMask.NameToLayer( "Water" ))
就意味着传进去的是二进制00000000000000000000000000110000。