Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 将Int值指定给sprite节点_Ios_Swift_Sprite Kit - Fatal编程技术网

Ios 将Int值指定给sprite节点

Ios 将Int值指定给sprite节点,ios,swift,sprite-kit,Ios,Swift,Sprite Kit,在我的游戏中,我多次重复添加相同的节点以在屏幕上移动。此节点有一个文本为“1”或“2”的SKLabelNode子节点。我希望能够根据标签的文本指定1或2的数值。使用下面的代码,我为一个键设置了一个值,但我不知道如何将它与我的节点关联起来,以便能够检查它。有没有人有更简单的方法来做这件事,或者无论如何都要修复我现有的代码 if theLabel.text == "1" { var userDefaults = NSUserDefaults.standardUserDef

在我的游戏中,我多次重复添加相同的节点以在屏幕上移动。此节点有一个文本为“1”或“2”的SKLabelNode子节点。我希望能够根据标签的文本指定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")

        }

如果要检查子labelNode中的文本,请在初始化labelNode时首先为其指定名称:

theLabel.name = "labelNode"
这就足够了。现在,在您的
didBeginContact
方法中,您可能已经有了这样的方法来检查联系人:

var firstBody: SKPhysicsBody
var secondBody: SKPhysicsBody

firstBody = contact.BodyA
secondBody = contact.BodyB
您可能已经知道,要访问与每个实体关联的sprite节点,只需指定例如
contact.BodyA.node
。因此,剩下的就是找到名为“labelNode”的
contact.BodyA.node
的子节点。您可以这样做:

var labelNode: SKLabelNode = contact.bodyA.node.childNodeWithName("labelNode") as SKLabelNode
好的,现在您已经有了标签节点,您可以轻松地检查其文本并执行任何您想要的操作:

println(labelNode.text)

现在你只需要对bodyB做同样的事情。希望这有帮助

如果要检查子labelNode中的文本,应在初始化labelNode时首先为其指定名称:

theLabel.name = "labelNode"
这就足够了。现在,在您的
didBeginContact
方法中,您可能已经有了这样的方法来检查联系人:

var firstBody: SKPhysicsBody
var secondBody: SKPhysicsBody

firstBody = contact.BodyA
secondBody = contact.BodyB
您可能已经知道,要访问与每个实体关联的sprite节点,只需指定例如
contact.BodyA.node
。因此,剩下的就是找到名为“labelNode”的
contact.BodyA.node
的子节点。您可以这样做:

var labelNode: SKLabelNode = contact.bodyA.node.childNodeWithName("labelNode") as SKLabelNode
好的,现在您已经有了标签节点,您可以轻松地检查其文本并执行任何您想要的操作:

println(labelNode.text)

现在你只需要对bodyB做同样的事情。希望这有帮助

何时何地需要访问此值?在某些情况下,这是存储值的最佳方式。例如,如果您想在应用程序中设置一个值,该值将在终止后保留。@M321K我需要在didBeginContact中检查该值,以便在发生冲突时能够区分相同节点的子标签具有不同文本。例如,我可以检查是否存在涉及节点的冲突,还可以检查节点的值是1还是2。好的,是的,有更好的方法,请查看我的回答您需要在何时何地访问此值?在某些情况下,这是存储值的最佳方式。例如,如果您想在应用程序中设置一个值,该值将在终止后保留。@M321K我需要在didBeginContact中检查该值,以便在发生冲突时能够区分相同节点的子标签具有不同文本。例如,我可以检查是否存在涉及节点的冲突,还可以检查节点的值是1还是2