我们一直在使用枚举来组织精灵的 zPosition。当我们开始向游戏中添加带有多个子精灵的 SKNode 时,结构很快就开始崩溃。一些放置在屏幕上的子精灵必须具有负值才能位于其他具有子节点的节点下方。这些负值相对于单独枚举中的其他精灵很难跟踪。
有没有比使用枚举更好的方法来组织精灵的 zPosition(尤其是那些有子精灵的)?
我们一直在使用枚举来组织精灵的 zPosition。当我们开始向游戏中添加带有多个子精灵的 SKNode 时,结构很快就开始崩溃。一些放置在屏幕上的子精灵必须具有负值才能位于其他具有子节点的节点下方。这些负值相对于单独枚举中的其他精灵很难跟踪。
有没有比使用枚举更好的方法来组织精灵的 zPosition(尤其是那些有子精灵的)?
在阅读更多关于您的问题后,您似乎正在使用多个枚举来组织您的 z 顺序。我建议对游戏的 z 顺序使用单个枚举。
使用图层来组织您的场景:
- (instancetype)initWithSize:(CGSize)size {
if (self = [super initWithSize:size]) {
self.view.ignoresSiblingOrder = YES;
[self addLayers];
}
return self;
}
- (void)addLayers {
self.backgroundLayer = [SKNode node];
self.backgroundLayer.zPosition = 100;
[self addChild:self.backgroundLayer];
self.playerLayer = [SKNode node];
self.playerLayer.zPosition = 300;
[self addChild:self.playerLayer];
self.enemyLayer = [SKNode node];
self.enemyLayer.zPosition = 400;
[self addChild:self.enemyLayer];
// UI elements must be on top of all nodes on the scene
self.uiLayer = [SKNode node];
self.uiLayer.zPosition = 1000;
}
- (void)addBackgrounds {
SKSpriteNode *backgroundNode1 = [SKSpriteNode spriteNodeWithTexture:[self backgroundTexture1]];
backgroundNode1.zPosition = 10;
[self.backgroundLayer addChild:backgroundNode1];
SKSpriteNode *backgroundNode2 = [SKSpriteNode spriteNodeWithTexture:[self backgroundTexture2]];
backgroundNode2.zPosition = 20;
[self.backgroundLayer addChild:backgroundNode2];
}
.... etc