1

我想创建一个在游戏暂停时出现的“PAUSED”标志。它应该有一个白色的背景和文字“暂停”。

--------
|PAUSED|
--------

文档说你不能子类化一个节点来做自定义绘图,这很可悲:(

所以我决定使用一个白色的精灵节点和一个标签节点来做到这一点。然后我可以将标签节点添加为精灵节点的子节点:

let pauseText = SKLabelNode(text: "PAUSED")
pauseText.fontColor = UIColor.blackColor()
pauseText.fontName = "Times New Roman"
pauseText.fontSize = 30
pauseNode = SKSpriteNode(color: UIColor.whiteColor(), size: pauseText.frame.size)
pauseNode.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame))
pauseText.position = CGPointMake(CGRectGetMidX(pauseNode.frame), CGRectGetMidY(pauseNode.frame))
pauseNode.zPosition = 999
pauseNode.addChild(pauseText)

其中pauseNode是精灵节点,pauseText是标签节点。

但这似乎不起作用。精灵节点显示为一个细长的矩形,我看不到其中的任何文本。

这个怎么做?

4

1 回答 1

2

您分配的值pauseText.position将导致文本从屏幕上移出。

SKNode 文档

节点树中的每个节点都为其子节点提供一个坐标系。将子节点添加到节点树后,通过设置其位置属性将其定位在其父节点的坐标系中。

如果将位置设置为 (0, 0),您会看到文本,但它有点太高了。然后只需更改 y 值,使其垂直居中于其父级。

pauseText.position = CGPointMake(0, -pauseNode.frame.height / 2)

这将显示

在此处输入图像描述


在一个侧面节点上,我了解到它fontName可以是字体名称或字体系列名称,这很酷。

于 2016-02-21T06:20:33.347 回答