zoukankan      html  css  js  c++  java
  • 位运算符和unity Layers

    按位运算符:与(&)、非(~)、或(|)、异或(^)、<<(左移)、>>(右移)。位运算符主要用来对二进制位进行操作。
    逻辑运算符:&&、||、!。逻辑运算符把语句连接成更复杂的复杂语句。
     
    与运算符:只有两个位都是1,结果才是1;
    或运算符:只要两个位有一个是1,结果就是1;
    非运算符:如果位为0,结果是1,如果位为1,结果是0;
    异或运算符:两个操作数的位中,相同则结果为0,不同则结果为1;
    左移运算符<<:左移表示乘以2,左移多少位表示乘以2的几次幂;
    右移运算符>>:移动多少位表示除以2的几次幂。
     
    Unity是用 int32来表示32个Layer层,int32用二进制来表示一共有32位。
    0000 0000 0000 0000 0000 0000 0000 0000
    31                    0
     
    eg:
    (1)LayerMask mask = 1<<2; ----开启Layer2
    其中 <<左边的 1表示有[开启],0表示没有该layer[忽略] 。右边的2表示左移2位即是 layer2层的位置。
    (2)LayerMask mask = 1 << 0 | 1 << 2;; ----开启layer 0和layer 2
    (3)LayerMask mask = 1 << 0 | 0 << 2 ----开启Layer0 并关闭 Layer2
    (4)打开Npc层,变1 或 运算符
    camera.cullingMask |= 1 << LayerMask.NameToLayer("Npc"); camera.cullingMask = (int) 1<<LayerMask.NameToLayer("Npc");//写法二
    (5)关闭Npc层,变0 按位与 & 按位取反 ~
    camera.cullingMask &= ~(1 << LayerMask.NameToLayer("Npc"));
    (6)开关Npc层,按位异或 ^
    camera.cullingMask ^= 1 << LayerMask.NameToLayer("Npc");

  • 相关阅读:
    axios中put和patch的区别(都是update , put是需要提交整个对象资源,patch是可以修改局部)
    父子组件传值
    springboot+mybatis 配置sql打印日志
    spring cloud eureka
    springAop
    java线程dump分析工具
    02.java并发编程之原子性操作
    01线程的一些方法
    Spring validator常用注解
    Idea报错Command line is too long
  • 原文地址:https://www.cnblogs.com/leeplogs/p/9133824.html
Copyright © 2011-2022 走看看