Sprite Kit允许的categoryBitMask的最大数量是多less?

我听说每个Sprite Kit游戏只允许使用32个不同的categorybitmask。 有没有办法解决? 我绝对需要更多的(大约3-4倍以上,因为游戏是一个开放的世界)。 我build立了我的categorybitmask如下:

static const uint64_t boundaryCategory = 0x1 << 0; static const uint64_t mainCharCategory = 0x1 << 1; ... static const uint64_t someOtherCategory = 0x1 << 31; 

我甚至改变uint32_t到uint64_t希望这将加倍我可以使用的categorybitmask的数量。 不幸的是,事实并非如此。 如果有人知道任何技术绕过这个限制,我将非常感激。

有很多方法可以在这个问题上得到创造性。 例如,您可以使用节点的名称属性。 让所有的敌人在一个类别的BitMask下,并使用他们的名字来区分他们一旦联系。

另一种方法是使用SKNode字典属性。 如果需要,这允许您存储更详细的数据,而不仅仅是一个string。

创build一个SKNode词典:

 myNode.userData = [NSMutableDictionary dictionary]; [myNode.userData setObject:@"goblin" forKey:@"enemyType"]; 

读字典:

 NSString *myString = [myNode.userData objectForKey:@"enemyType"];