纳金网

标题: LayerMask 在 Unity3d 脚本中的开关方法 [打印本页]

作者: 王者再临    时间: 2014-10-31 15:44
标题: LayerMask 在 Unity3d 脚本中的开关方法
在操作 LayerMask 时常令一些初学者摸不着头脑下面简单说一下层的开关方法:

1.首先引入'|'、'&'、'~'的概念
与(交集):10000001 & 10000100 == 10000000

或(并集):10000001 | 10000100 == 10000101

非(反转):10000001 == ~01111110

2.int myLayerMask = 1 << curLayer;
等式右侧 curLayer 代表Inspector/Layer中的某一层
等号左侧是通过一个数来保存多个层的信息
他是怎么做到的呢?
其实是用 myLayerMask = 00000000 方式来保存的
myLayerMask = 1 << 3 ---> myLayerMask == 00001000
这时层级中的第3层被开启,其余层处于关闭状态
另外,需注意的是,层的序号是从0开始计算的
因此,上面的操作相当于使用二进制方法进行一对多表现方式的转化过程

3.实例讲解
有了上面铺垫,我们就可以轻松的对多个Layer进行开关了
1)开启1、2层
camera.cullingMask = (1 << 1) | (1 << 2);
2)开启除2层外的所有层
camera.cullingMask = ~(1 << 2);
3)开启除1、2、4层外的所有层
camera.cullingMask = ~((1 << 1) | (1 << 2) | (1 << 4));

作者: HIDEOKOJIMA    时间: 2014-10-31 17:40
Wow, thanks for sharing this one !
作者: 我不再年轻    时间: 2014-10-31 20:28
比较搞,学习了




欢迎光临 纳金网 (http://www.narkii.com/club/) Powered by Discuz! X2.5