我听说每个 Sprite Kit 游戏只允许使用 32 个不同的类别位掩码。有没有办法解决?我绝对需要更多(大约 3-4 倍,因为游戏是开放世界的)。我设置了我的 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,希望这会使我可以使用的类别位掩码数量增加一倍。不幸的是,事实并非如此。如果有人知道绕过这个限制的任何技术,我将不胜感激。

最佳答案

您可以通过多种方式在此问题上发挥创意。例如,您可以使用节点的 name 属性。将您的所有敌人归入一个类别 BitMask 并在接触后使用他们的名字来区分他们。

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

创建 SKNode 字典:

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

阅读字典:
NSString *myString = [myNode.userData objectForKey:@"enemyType"];

关于ios - Sprite Kit 中允许的 categoryBitMask 的最大数量是多少?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30752418/

10-14 21:44