SpriteKit - 背景中标签的基本定位
Posted
技术标签:
【中文标题】SpriteKit - 背景中标签的基本定位【英文标题】:SpriteKit - Basic Positioning of a label in a background 【发布时间】:2015-12-28 22:12:36 【问题描述】:对 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)
所以标签在任何情况下都不会显示,我的假设是:
因为我先添加背景,所以标签被添加到背景范围内,因此需要以不同的方式定位,也许使用标签大小而不是屏幕大小?
我的问题:
-
如何让标签始终显示在左上角?
作者为此背景图像选择了一个硬编码的 CGPoint,然后说它必须在 iPad 上,但我想在 iPhone 6/plus 横向以及 iPad 上这样做。有没有一种方法可以让它在两个设备上都工作而不必指定这样的 CGPoint ?它不能只是扩展和工作吗?
感谢并道歉,如果这些是基本问题 - 我将尽我所能继续阅读该主题..
【问题讨论】:
【参考方案1】:您的问题有一个简单的答案。您忘记或遗漏了代码中的某些内容,我可以向您展示这些内容。
在您的代码中,您将背景 ZPosition 设置为 -1,最小的数字将始终出现在后面。所以如果你把 SKLabelNode 设置为更大的 zPosition 它总是会出现在最前面,因为可能渲染有问题,因为我也有这样的经历,我是这样解决的:
在添加 LabelNode 之前,将其属性设置为:
gamescore.zPosition = 0
0,在这种情况下,可能只是比背景(或您希望出现在后面的节点)更大的任何东西。所以这只是告诉编译器你希望 LabelNode 出现在前面,或者背景前面。
如果您想制作通用应用或游戏,您需要使用 SpriteKit 向您的游戏或应用添加一些额外代码。既然我认为给你一个很好的教程来展示你而不是向你展示一些基础知识会更好,所以我会给你一个很好的链接来告诉你如何做到这一点:
SpriteKit: how to make a universal app
我希望这会有所帮助,别担心,这花了我一些时间来弄清楚自己。
【讨论】:
以上是关于SpriteKit - 背景中标签的基本定位的主要内容,如果未能解决你的问题,请参考以下文章