ios - 为 sprite 节点分配 Int 值

标签 ios swift sprite-kit

在我的游戏中,我多次重复添加相同的节点以在屏幕上移动。此节点有一个 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")

        }

最佳答案

如果在 didBeginContact 中你想检查子 labelNode 中的文本是什么,你应该在初始化时首先为 labelNodes 指定一个名称:

theLabel.name = "labelNode"

这就足够了。现在,在您的 didBeginContact 方法中,您可能已经有了这样的东西来检查联系人:

var firstBody: SKPhysicsBody
var secondBody: SKPhysicsBody

firstBody = contact.BodyA
secondBody = contact.BodyB

您可能已经知道,要访问与您指定的每个 body 关联的 Sprite 节点,例如 contact.BodyA.node。所以,剩下的就是找到 contact.BodyA.node 的名为 "labelNode" 的子节点。你可以这样做:

var labelNode: SKLabelNode = contact.bodyA.node.childNodeWithName("labelNode") as SKLabelNode

好的,现在您有了标签节点,您可以轻松检查其文本并执行任何您想做的事情:

println(labelNode.text)

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

关于ios - 为 sprite 节点分配 Int 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31977929/

相关文章:

ios - SKSpriteNode 将图像带到底部 - IOS 游戏

ios - 使用 ARKit 加载的 3d 文件有大小限制吗?

ios - 如何在 Swift 4 中通过 html 以 pdf 格式写入图像

iOS UIView 滚动 UI - 如何实现?

ios - 通过自定义 UITableViewCell 上的 UISwipeGestureRecognizer 更新 CoreData?

swift - UTC 到本地时间 - 错误的结果很快

iOS 10.3.3 导航栏不显示所有按钮

ios - 为什么我的第二个场景是空的?

ios - 在 SpriteKit 中,touchesBegan 是否在与 SKScene 更新方法相同的线程中运行?

ios - 我可以在不更改 Zumero 同步客户端架构的情况下更改服务器端架构吗?