精灵套件模糊文本(SKLabelNode)渲染

时间:2014-05-23 13:34:20

标签: macos sprite-kit

我正在开发OS X和Sprite Kit游戏。

如果您查看附带的屏幕截图,您会发现大部分文字都显得模糊不清。我在这里使用自定义字体,但即使使用helvetica,问题也是一样的。另外请注意,这两行" ...访问饮酒龙旅馆。"和#34; ...离开这个城市"没有模糊......不知道为什么。

场景大小与视图/窗口大小相同,所以这不应该是问题。

知道发生了什么事吗?

Screenshot of the font issue

1 个答案:

答案 0 :(得分:2)

你的评论是正确的,它与半数有关。但不是节点本身的位置。当您将文本居中时,就会发生这种情况。您可以通过创建包含SKLabelNode的SKSpriteNode子类来解决它。将SKLabelNodes horizo​​ntalAlignmentMode设置为SKLabelHorizo​​ntalAlignmentModeRight(或左侧)。现在手动将SKLabelNode置于SKNode中心,并舍入为整数。

(在下面的示例中,我使用透明纹理初始化一个SKSpriteNode,主要用于调试,因此我可以使用非透明纹理轻松初始化它以查看其图形的位置。)

更新代码:

-(id) init {
    if (self=[super initWithTextureNamed:@"1x1trans.png"]) {

        _textLabel = [SKLabelNode labelNodeWithFontNamed:@"Avenir-Light"];
        _textLabel.horizontalAlignmentMode = SKLabelHorizontalAlignmentModeRight;
        [self addChild:_textLabel];
    }
    return self;
}

#pragma mark - Getters/Setters

-(void) setDelegate:(TextBlock *)delegate {
    [super setDelegate:delegate];
    _textLabel.text = delegate.text;
    _textLabel.position = CGPointMake(floor(_textLabel.calculateAccumulatedFrame.size.width/2), _textLabel.position.y);
}