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

Kre*_*kin 4 objective-c bitmask ios sprite-kit

我听说每个Sprite Kit游戏只允许使用32种不同的categorybitmask.有没有办法解决?我绝对需要更多(自游戏开放世界以来大约3-4倍).我将categorybitmask设置如下:

static const uint64_t boundaryCategory    = 0x1 << 0;
static const uint64_t mainCharCategory    = 0x1 << 1;
...
static const uint64_t someOtherCategory   = 0x1 << 31;
Run Code Online (Sandbox Code Playgroud)

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

san*_*ony 7

您可以通过多种方式了解此问题.例如,您可以使用节点的name属性.将所有敌人置于一个categoryBitMask下,并在联系完成后使用他们的名字来区分他们.

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

创建SKNode字典:

myNode.userData = [NSMutableDictionary dictionary];
[myNode.userData setObject:@"goblin" forKey:@"enemyType"];
Run Code Online (Sandbox Code Playgroud)

读字典:

NSString *myString = [myNode.userData objectForKey:@"enemyType"];
Run Code Online (Sandbox Code Playgroud)