SpriteKit - 基本在背景中定位标签

时间:2015-12-28 22:12:36

标签: ios swift sprite-kit

Sprite Kit非常新,我现在正在做一些阅读,但是想问一些我还没有找到最佳答案的事情。

我正在做一些教程,其中包含一些创建背景的代码,然后添加一个标签来显示分数。我开始更改标签代码,将其放置在屏幕的左上角。

以下是代码(我对标签的编辑,gameLabel):

 let screenSize = UIScreen.mainScreen().bounds
 let screenWidth = screenSize.width
 let screenHeight = screenSize.height

let background = SKSpriteNode(imageNamed: "background")
    background.position = CGPoint(x: screenWidth / 10, y: (screenHeight / 15) - 100)
    background.blendMode = .Replace
    background.zPosition = -1
    addChild(background)

gameScore = SKLabelNode(fontNamed: "Chalkduster")
gameScore.text = "Score: 0"
gameScore.position = CGPoint(x: screenWidth / 10, y: (screenHeight / 15) - 100)
gameScore.horizontalAlignmentMode = .Left
gameScore.verticalAlignmentMode = .Top
gameScore.fontSize = 48
addChild(gameScore)

所以标签在任何情况下都不显示,我的假设是:

因为我首先添加背景,所以标签会在背景的范围内添加,因此需要以不同的方式定位,可能使用标签尺寸而不是屏幕尺寸?

我的问题:

  1. 如何让标签始终显示在左上角?
  2. 作者为这张背景图片选择了一个硬编码的CGPoint,然后说它必须在iPad上,但我想在风景和iPad上使用iPhone 6 / plus。有没有一种方法可以让它在两个设备上都能正常运行而无需像这样指定CGPoint?它不能只是扩展和工作吗?
  3. 如果这些是基本问题,感谢并道歉 - 我会尽力继续阅读这个主题......

1 个答案:

答案 0 :(得分:1)

  1. 您的问题有一个简单的答案。你忘了并错过了代码中的某些东西,我可以告诉你这些事情。

    在您的代码中,您将背景ZPosition设置为-1,最小的数字将始终显示在背面。因此,如果您将SKLabelNode设置为更大的zPosition,它将始终显示在前面,因为渲染可能存在问题,因为我也有这样的经历,我这样修复:

  2. 在添加LabelNode之前,将其属性设置为:

    gamescore.zPosition = 0
    

    0,在这种情况下,可能只是比背景更大的东西(或者你想在后面出现的节点)。所以这只是告诉编译器你希望LabelNode出现在前面或后面的前面。

    1. 如果您想制作通用应用或游戏,使用SpriteKit,您需要为游戏或应用添加一些额外的代码。既然我认为最好给你一个很好的教程来向你展示而不是向你展示一些基础知识,我会给你一个如何做到这一点的良好链接:

      SpriteKit: how to make a universal app

    2. 我希望这会有所帮助,不要担心这花了我一些时间来弄清楚自己。