gpt4 book ai didi

ios - SKLabelNode 不尊重 zPosition?

转载 作者:行者123 更新时间:2023-11-28 05:44:09 37 4
gpt4 key购买 nike

我有两个 SKLabelNode,一个显示分数,另一个充当分数后面的阴影。每次我的球员通过一个目标时,我都会通过调用下面的 updateScoreLabels() 方法更新得分标签以增加 1 分。

但出于某种原因,无论我为这些 SKLabelNode 中的每一个设置什么 zPosition,这两个节点都是以随机顺序绘制的,并且每次我调用 updateScoreLabels() 方法时,它们的顺序都会随机翻转。如果我将一个 SKLabelNode 添加为另一个 SKLabelNode 的子节点,我将 .ignoresSiblingOrder 设置为什么似乎也无关紧要。节点完全忽略 zPosition。我究竟做错了什么?这是我的代码:

这个方法在didMoveToView()中被调用:

func createScoreLabel() {
//Configure score label
scoreLabel = SKLabelNode(fontNamed: "8BIT WONDER Nominal")
scoreLabel.text = "O"
scoreLabel.fontSize = 32
scoreLabel.position = CGPoint(x: -UIScreen.main.bounds.size.width/2 - scoreLabel.frame.size.width/2, y: UIScreen.main.bounds.size.height/2 - scoreLabel.frame.size.height/2 - 60)
scoreLabel.zPosition = 999

//Configure shadow
scoreLabelShadow.attributedText = NSAttributedString(string: "O", attributes: scoreLabelShadowAttributes)
scoreLabelShadow.position = CGPoint(x: -UIScreen.main.bounds.size.width/2 - scoreLabel.frame.size.width/2, y: UIScreen.main.bounds.size.height/2 - scoreLabel.frame.size.height/2 - 60)
scoreLabelShadow.zPosition = -9999999999

//Add labels
cam.addChild(scoreLabel)
cam.addChild(scoreLabelShadow)

//Animate labels
scoreLabel.run(SKAction.move(to: CGPoint(x: -UIScreen.main.bounds.size.width/2 + scoreLabel.frame.size.width/2 + 30, y: UIScreen.main.bounds.size.height/2 - scoreLabel.frame.size.height/2 - 60), duration: 0.1))
scoreLabelShadow.run(SKAction.move(to: CGPoint(x: -UIScreen.main.bounds.size.width/2 + scoreLabel.frame.size.width/2 + 30, y: UIScreen.main.bounds.size.height/2 - scoreLabel.frame.size.height/2 - 60), duration: 0.1))
}

然后当我递增分数标签时调用它。每当这被称为 zPositions 随机翻转时:

func updateScoreLabel() {
let formattedScore = String(score).replacingOccurrences(of: "0", with: "O")

scoreLabel.text = String(formattedScore)
scoreLabelShadow.attributedText = NSAttributedString(string: formattedScore, attributes: scoreLabelShadowAttributes)
}

最佳答案

正如我回答的here : 我通常创建枚举来建立 zPositions,所以我可以简单地管理不同的层:

enum ZPositions: Int {
case background
case foreground
case player
case otherNodes
}
  • “case background”为下位,相当于默认位置0;
  • “案例前景”= 1
  • “案例玩家”= 2
  • “案例其他节点”= 3

因此,当您设置一个新项目时,您可以通过这种方式简单地为其指定 zPosition:

button.zPosition = CGFloat(ZPosition.otherNodes.rawValue)

(按钮现在具有最高的 zPosition)希望它能帮助...

关于ios - SKLabelNode 不尊重 zPosition?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55551877/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com