【发布时间】:2016-09-11 19:17:59
【问题描述】:
我基本上想在 Singles 中添加自定义字体编号(带图像),并在我使用 SpriteKit 的游戏中添加它们作为我的分数。
这是字体图片样式
它们是从0到9的数字
我一直试图弄清楚这一点。
我不确定您是否可以将其添加到 SKLabelNode 中,或者您是否必须将其添加到类中。
【问题讨论】:
标签: ios sprite-kit sklabelnode
我基本上想在 Singles 中添加自定义字体编号(带图像),并在我使用 SpriteKit 的游戏中添加它们作为我的分数。
这是字体图片样式
它们是从0到9的数字
我一直试图弄清楚这一点。
我不确定您是否可以将其添加到 SKLabelNode 中,或者您是否必须将其添加到类中。
【问题讨论】:
标签: ios sprite-kit sklabelnode
SKLabelNode 不允许使用位图字体。如果您的自定义字体是 TTF,您将能够使用带有 SKLabelNode 的自定义字体。这里有一个解释:SKlabelNode custom font
在您的情况下,由于您想使用位图字体,因此您需要创建一个类来执行此操作。您可以将SKNode 子类化,也可以不子类化。但是您希望有一个 SKNode 作为“根”,然后让您的号码的每个数字都是一个 SKSpriteNode(这些将是代表该数字的根节点的子节点)。
您需要确定的一件事是如何处理数字的对齐方式(水平和垂直)。
我以前使用我自己的自定义类来绘制数字,并且通常将其配置为可水平调整(左对齐、右对齐和居中)。但出于懒惰,我通常总是垂直居中。
这听起来可能很复杂,但很容易做到。你只需要拥有
SKSpriteNode 的方法和
添加每个新数字。每个新数字都被适当的数量偏移
基于对齐方式。您的自定义类应在设置数字值后构建正确的SKSpriteNodes 来表示数字。
关于如何将数组与SKTexture 一起使用的最后一个问题的一些更新信息。此代码未经编译测试,旨在为您提供更好的想法。
// Example of storing digits in an array. Assumes you are putting this in an atlas and your
// sub-texture names are 0, 1, etc. If not you'll have to adjust the code accordingly
var numTextures = [SKTexture]()
let numberAtlas = SKTextureAtlas(named: "NumberAtlas")
for i in 0 ..< 10 {
numTextures.append(numberAtlas.textureNamed("\(i)"))
}
// To get the texture for a digit
func textureForDigit(digit:Int) -> SKTexture {
return numTextures[digit]
}
【讨论】:
SKTexture的数组,其中索引0代表0,索引1代表1,以此类推