如何解决SKLabel 在分配给特定元素时不显示
(以下所有代码均在 Swift Playgrounds 中编写)
var rnaBacteriacopy1 = SKSpriteNode()
var rnaBacteriacopy2 = SKSpriteNode()
var rnaViruscopy4 = SKSpriteNode()
let rnacopies = [
rnaBacteriacopy1,rnaViruscopy4,rnaBacteriacopy2
]
然后我将 SKTextures 分配给这些变量(每个变量的文本都相似)
rnaBacteriacopy1 = SKSpriteNode(texture: SKTexture(image:(here I inserted a PNG))
rnaBacteriacopy1.position = CGPoint(x: 1160,y: 325)
rnaBacteriacopy1.isHidden = true
addChild(rnaBacteriacopy1)
最后使用 public override function touches began
我让它选择一个随机变量,如果选择的变量是特定变量,则显示标签。
override public func touchesBegan(_ touches: Set<UITouch>,with event: UIEvent?) {
var therandomcopy = rnacopies.randomElement()
rnacopies.randomElement()?.isHidden = false
if therandomcopy == rnaBacteriacopy1 {
// Fading Label
var tryAgainLbl = SKLabelNode(text: "Uh oh! Try again.")
tryAgainLbl.fontSize = 70.0
tryAgainLbl.position = CGPoint(x: frame.midX,y: frame.midY)
tryAgainLbl.fontColor = .white
let fadein = SKAction.fadeIn(withDuration: 1)
let remove = SKAction.removeFromParent()
tryAgainLbl.run(SKAction.sequence([fadein,remove]))
addChild(tryAgainLbl)
//Hide this copy
rnacopies.randomElement()?.isHidden = false
rnacopies.randomElement()?.isHidden = true
}
最后我隐藏了随机元素,这样你就可以看到其他 SKTexture 并点击它。我已经尝试使 if 语句尽可能具体(putting && != to other variable other than this)
。但它不起作用,有什么想法吗?
解决方法
提供节点名称,以便您可以引用它们。
您可以设置您设置位置的名称和isHidden等。
rnaBacteriaCopy1.name = "bacteria1"
请注意,您可以为 1 个以上的节点指定相同的名称,因此如果您的所有细菌节点都使用“细菌”名称是有意义的,那么您可以这样做。
您也可以为病毒提供名称:
rnaVirusCopy4.name = "virus"
现在,在您的触摸中开始替换此代码:
if therandomCopy == rnaBacteriaCopy1 {
有了这个:
if therandomCopy.name == "bacteria1" {
这意味着如果 randomCopy 节点的名称为“bacteria1”,则继续处理 if 中的标签代码。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。