在我的 SKScene 的 TouchesBegan 方法中,我正在检查用户是否选择了一个节点:
UITouch *touch = [[event allTouches] anyObject];
CGPoint location = [touch locationInNode:self];
SKNode *node = [self nodeAtPoint:location];
NSLog(@"node.name: %@",node.name);
if ([node.name isEqualToString:@"1"]){
bgColor = 1;
}
else if ([node.name isEqualToString:@"2"]){
bgColor = 2;
}
else if ([node.name isEqualToString:@"3"]){
bgColor = 3;
}
else if ([node.name isEqualToString:@"4"]){
bgColor = 4;
}
else if ([node.name isEqualToString:@"5"]){
bgColor = 5;
}
else if ([node.name isEqualToString:@"6"]){
bgColor = 6;
}
我的节点都在这样的方法中初始化:
SKShapeNode *bg = [SKShapeNode node];
[bg setPath:CGPathCreateWithRoundedRect(CGRectMake(self.size.width-50*2, 55, 50, 50), 6, 6, nil)];
bg.fillColor = [SKColor orangeColor];
bg.glowWidth = 0;
bg.name = @"6";
return bg;
当然,除了名称和颜色属性之外,这些方法都相似。节点分为两行,一个在 y 120,另一个在 y 55,X 不同,但是当用户单击第 120 行或第 55 行中的任何节点时,记录的节点名称最多是来自该节点的名称正确的。为什么会这样?我做错了什么?