-1

// 好吧,最初人们为这样的东西做他们的 ID:

var Item1 = 0;
var Item2 = 1;
var Item3 = 2;
var Item4 = 3;
var Item5 = 4;

// ... 等等。

// 然后为他们的检查创建更多变量,例如:

var HasItem1 = false;
var HasItem2 = false;
var HasItem3 = false;
var HasItem4 = false;
var HasItem5 = false;

// 然后,如果他们希望用户或玩家拥有该项目,则在他们的代码中的某处将项目设置为 true,但这是很多变量。

// 相反,我想做这样的事情:

var Item1 = 1;
var Item2 = 2;
var Item3 = 4;
var Item4 = 8;
var Item5 = 16;

var HasItems = 0; // 0 = no items added.

// 我的代码中的某处:

HasItems = Item1 + Item3 + Item4; // 1 + 4 + 8 = 13

// 但是找不到方法来检查玩家是否有 Item3 例如。

if(HasItems != 0 && (HasItems & Item3) != -1) { // It was something like this.
    // Has the item we're looking for.
}

// 之前看过我说的ID系统,忘记在哪里了。// 有人知道这个 ID 系统吗?

// !!!编辑!!! http://blog.millermedeiros.com/using-integers-to-store-multiple-boolean-values/

例子:

[code]
var Item1 = (1 << 1);
var Item2 = (1 << 2);
var Item3 = (1 << 3);
var Item4 = (1 << 4);
var Item5 = (1 << 5);

var Items = (Item1 | Item3 | Item4);

if(Items & Item1) {
print("true 1");
} 
else {
print("false 1");
}

if(Items & Item2) {
print("true 2");
} 
else {
print("false 2");
}

if(Items & Item3) {
print("true 3");
} 
else {
print("false 3");
}

if(Items & Item4) {
print("true 4");
} 
else {
print("false 4");
}

if(Items & Item5) {
print("true 5");
} 
else {
print("false 5");
}
[/code]

输出:

true 1
false 2
true 3
true 4
false 5

谢谢大家的回复,我按位和walla搜索了。特别感谢冬血!出于您的考虑,我知道它只支持有限数量的值,这适用于小型系统。

4

1 回答 1

0

可以使用以下代码检查 1 位: (HasItems & (1 << itemNumber)) != 0 其中itemNumber是项目数,从 0 开始。

此外,这可能更通用和方便: http: //msdn.microsoft.com/en-us/library/system.collections.bitarray.aspx http://msdn.microsoft.com/en-us/library/system .collections.specialized.bitvector32.aspx

于 2013-10-18T05:29:58.850 回答