【问题标题】:How do I obtain the SKSpriteNode of an item created through SpriteKit Editor?如何获取通过 SpriteKit 编辑器创建的项目的 SKSpriteNode?
【发布时间】:2015-01-02 01:29:30
【问题描述】:

我使用 SpriteKit(使用 Objective-C)在 XCode 中创建了一个相当简单的(在这一点上是实验性的)“游戏”。

我知道如何手动创建一个 SKSpriteNode 对象并将其添加到 SKScene - 但我正试图做相反的事情 - 我在 XCode SceneKit GUI 本身中创建了精灵(并给了它一个名字),现在我想在我的代码中检索它。

在以前使用 XCode 的经验中,您可以通过声明 @property UIOutlet [etc] 然后将其连接为 IB/Storyboard UI 内的引用插座来实现这一点 - 但我在内部找不到任何类似的方法来做到这一点SpriteKit 用户界面。

我可以创建一个属性(作为 SKSpriteNode),并将其命名为与我的 SpriteKit 对象相同的名称 - 它显示在 SKScene 下(在调试器中),但为“nil” - 即与我在 XCode SpriteKit UI 中创建的对象。

我是否遗漏了什么 - 或者这样做完全错误? :-O

【问题讨论】:

    标签: ios xcode sprite-kit


    【解决方案1】:

    如果您在 Sprite Kit 编辑器中设置节点的名称属性,您可以在 Swift 中通过以下方式访问该节点

    if let node = self.childNodeWithName("NodeName") as? SKSpriteNode {
        // Set up your sprite here
    }
    

    SKSpriteNode *node = (SKSpriteNode *)[self childNodeWithName:@"NodeName"];
    

    在 Obj-C 中。

    【讨论】:

    • 注意:只有当节点是场景的直接子节点时,此机制才有效。如果更复杂,您将需要手动遍历多个调用的节点树。
    • @bshirley SpriteKit 如果您在名称前面添加“//”(例如“//NodeName”),将递归搜索节点树。
    • @0x141E 你看到这个问题了吗stackoverflow.com/questions/38525232/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多