【问题标题】:SpriteKit displaying variable numberSpriteKit 显示变量编号
【发布时间】:2014-07-04 02:06:04
【问题描述】:

在 iPhone SpriteKit 的屏幕上显示某些值(随着游戏运行而变化)的最佳方式是什么?我能想到的唯一方法是SKLabelNode,但它可能不应该这样使用,而且我找不到任何方法来测量它的宽度,这让我无法正确定位它(我希望它是在右下角)。在此先感谢:)。

@编辑

我这样做的尝试:

 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_stringsome_int 的值随着游戏的运行而变化,因此 someLabel 被删除,someLabel.textsomeLabel.position 被重新分配,并再次添加标签。是的,我知道这是一种不好的做法......

【问题讨论】:

  • 让我们看看你到目前为止做了什么。
  • 我包含了我的代码。但这不是应该的样子……

标签: objective-c sprite-kit sklabelnode


【解决方案1】:

不幸的是,SKLabelNode 是您最简单的选择,它只是不是最强大的工具。 您只想在需要时更新其文本和位置。你的代码是正确的,如果你想得到它的实际大小,那么你会得到它的框架的宽度。

更新文本:

someLabel.text = theNewText;

更新位置:

someLabel.position = theNewPosition;

获取相对宽度

float widthOfLabelFrame = someLabel.frame.size.width;

可能有帮助的其他对齐设置(垂直基线是默认设置):

someLabel.horizontalAlignmentMode = SKLabelHorizontalAlignmentModeRight;
someLabel.verticalAlignmentMode = SKLabelVerticalAlignmentModeBaseline;

【讨论】:

  • 还请记住,frame.size.height 会根据字符串中的实际字符而变化,因此如果您有 j 或 p,那么尝试将其居中将会关闭。可能有更好的方法,但我总是加载默认字符串,如@“wwwwww”,获取该帧高度,然后使用该值进行所有定位计算。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-01
  • 2011-03-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多