有没有办法在 SKSpriteNode 中分配和调用变量?
Posted
技术标签:
【中文标题】有没有办法在 SKSpriteNode 中分配和调用变量?【英文标题】:is there a way assign and call variables in a SKSpriteNode? 【发布时间】:2019-04-10 09:11:52 【问题描述】:我正在尝试创建一个游戏,其中用户触摸球,如果他们触摸带有正确数字的球,它就会增加他们的分数。
我在球上放了一个标签来显示球号。
当用户按下球时,我希望它检查球上的标签并将其与变量进行比较以查看它们是否匹配。
我尝试调用 myLabel.text 的值,但 xcode 告诉我它无效。
将变量存储到 SKSpriteNode 中以便在用户按下 SKSpriteNode 时进行比较的最佳方法是什么。
谢谢。
这是我的代码 -->
func createBallNode(ballNumber: Int) -> SKSpriteNode
//set up a ball
let ball = SKSpriteNode(imageNamed: "ballimage.png")
ball.size = CGSize(width:200, height:200)
ball.name = "ballSpriteNode"
ball.physicsBody = SKPhysicsBody(rectangleOf: ball.frame.size)
ball.physicsBody?.usesPreciseCollisionDetection = true
let myLabel = SKLabelNode(fontNamed:"Helvetica")
myLabel.text = String(ballNumber)
myLabel.name = "myLabel"
myLabel.fontSize = 80
myLabel.fontColor = UIColor.black
myLabel.position = CGPoint.zero
ball.addChild(myLabel)
return ball
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?)
let touch:UITouch = touches.first!
let positionInScene = touch.location(in: self)
let touchedNode = self.atPoint(positionInScene)
//???
【问题讨论】:
使用 userData 属性。 谢谢,我让它与 userData ball.userData = NSMutableDictionary() ball.userData?.setValue(Int(ballNumber), forKey:”ballNumberKey”) // 一起工作被触动让 x = (touchedNode.userData?.value(forKey: “ballNumberKey”)) as!整数打印(x) 【参考方案1】:要么使用childNode(withName:)
找到子标签节点,要么只是更改节点名称ball.name = "String(ballNumber)"
并检查您可能接触过的节点
if let touchedNode = touchedNode, touchedNode.name == correctNumber
//whatever
【讨论】:
谢谢,我最终使用了 .userData,所以我可以在 SKSpriteNode 中存储整数以上是关于有没有办法在 SKSpriteNode 中分配和调用变量?的主要内容,如果未能解决你的问题,请参考以下文章