前言
使用习惯了unity和c#,有时候可能会忽略掉一些当初学习C/C++小技巧,最近开发项目的时候,项目组那些有经验的前辈介绍了有关使用一个整数保存多个状态的方法,使用的就是以前C/C++中常用的位运算。
使用场景
先试想一个场景,比如一个套装装备有十多个插槽,需要检测这些插槽是否插有加成的宝石,就需要十多个变量来代表有或者没有,使用多个bool变量或者int数组,显得结构臃肿且难以管理,既然只是表示有或者无,那么用0,1就可以表示,所以想到使用二进制来表示这些变量。
具体方法
所以,设置一个int类型的状态变量
int slotState = 0;
好了,现在我们在插槽全空的状态下在3号插槽插上了一个加成宝石,用二进制表示就应该是100,即第三号插槽有宝石,显然,不能直接写slotState = 4,这样就失去了我们使用这种方法的初衷,应该按照下面的这样写。
slotState = slotState|(1<<2)
其中1<<2 是按照二进制计算的,1<<2 =