在iPhone SpriteKit
的屏幕上显示某些值(随着游戏运行而变化)的最佳方法是什么?我能想到的唯一方法是SKLabelNode
,但它可能不是这样使用的,而且我找不到任何方法来测量它的宽度,这使得我无法正确定位它(我希望它在右下角)。提前谢谢:).
@Edit
我的尝试:
SKLabelNode *someLabel = [SKLabelNode labelNodeWithFontNamed:@"Chalkduster"];
someLabel.text = some_string;
someLabel.fontSize = 30;
someLabel.fontColor = [SKColor blackColor];
someLabel.position = CGPointMake(some_int, 15);
[self addChild:someLabel];
some_string
和some_int
的值会随着游戏的运行而变化,所以移除someLabel
,重新分配someLabel.text
和someLabel.position
,并重新添加标签。是的,我知道这是一个不好的方式来做这个…
不幸的是,SKLabelNode是您最简单的选择,它只是不是最健壮的工具。你只需要在需要的时候更新它的文本和位置。你的代码是正确的,如果你想得到它的实际大小,那么你就会得到它的帧的宽度。
更新文本:
someLabel.text = theNewText;
更新位置:
someLabel.position = theNewPosition;
获取相对宽度
float widthOfLabelFrame = someLabel.frame.size.width;
可能有帮助的其他对齐设置(默认为垂直基线):
someLabel.horizontalAlignmentMode = SKLabelHorizontalAlignmentModeRight;
someLabel.verticalAlignmentMode = SKLabelVerticalAlignmentModeBaseline;