将 Int 值分配给精灵节点
Posted
技术标签:
【中文标题】将 Int 值分配给精灵节点【英文标题】:Assign Int value to sprite node 【发布时间】:2015-08-13 01:11:23 【问题描述】:在我的游戏中,我多次重复添加相同的节点以在屏幕上移动。此节点有一个 SKLabelNode 子节点,其文本为“1”或“2”。我希望能够根据标签的文本分配 1 或 2 的数值。使用下面的代码我为一个键设置了一个值,但我不知道如何将它与我的节点相关联以便能够检查它。有没有人有更简单的方法来做到这一点,或者无论如何都要修复我现有的代码?
if theLabel.text == "1"
var userDefaults = NSUserDefaults.standardUserDefaults()
number = userDefaults.integerForKey("number")
userDefaults.setValue(1, forKey: "number")
if theLabel.text == "2"
var userDefaults = NSUserDefaults.standardUserDefaults()
number = userDefaults.integerForKey("number")
userDefaults.setValue(2, forKey: "number")
【问题讨论】:
您需要在何时何地访问此值?在某些情况下,这将是存储值的最佳方式。例如,如果您想为应用中的某个设置设置一个值,该值将在终止后保留。 @M321K 我需要检查 didBeginContact 中的值,以便在发生碰撞时区分子标签具有不同文本的相同节点。所以例如我可以检查是否存在涉及节点的冲突,还可以检查节点的值是 1 还是 2。 好的,有更好的方法来做到这一点,看看我的回答 【参考方案1】:如果您想在didBeginContact
中检查子标签节点中的文本,您应该在初始化标签节点时首先为它们指定一个名称:
theLabel.name = "labelNode"
这就够了。现在,在您的 didBeginContact
方法中,您可能已经有类似的东西来检查联系人:
var firstBody: SKPhysicsBody
var secondBody: SKPhysicsBody
firstBody = contact.BodyA
secondBody = contact.BodyB
您可能已经知道要访问与您刚刚指定的每个主体关联的精灵节点,例如contact.BodyA.node
。所以,剩下的就是找到名为"labelNode"
的contact.BodyA.node
的子节点。你可以这样做:
var labelNode: SKLabelNode = contact.bodyA.node.childNodeWithName("labelNode") as SKLabelNode
好的,现在您有了标签节点,您可以轻松检查其文本并做任何您想做的事情:
println(labelNode.text)
现在你只需对 bodyB 做同样的事情。希望这会有所帮助!
【讨论】:
以上是关于将 Int 值分配给精灵节点的主要内容,如果未能解决你的问题,请参考以下文章