在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
,并且标签再次添加。是的,我知道这是一个不好的方法......
答案 0 :(得分:1)
不幸的是,SKLabelNode是您最简单的选择,它不是最强大的工具。 您只需要在需要时更新其文本及其位置。你的代码是正确的,如果你想获得它的实际大小,那么你将得到它的框架的宽度。
更新文字:
someLabel.text = theNewText;
更新位置:
someLabel.position = theNewPosition;
获得相对宽度
float widthOfLabelFrame = someLabel.frame.size.width;
可能有帮助的其他对齐设置(垂直基线是默认值):
someLabel.horizontalAlignmentMode = SKLabelHorizontalAlignmentModeRight;
someLabel.verticalAlignmentMode = SKLabelVerticalAlignmentModeBaseline;