微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

你如何在 sprite kit 中引用多个同名的 sprite?

如何解决你如何在 sprite kit 中引用多个同名的 sprite?

import SpriteKit
var ground: SKSpriteNode?

class GameScene: SKScene {
    
   
    override func didMove(to view: SKView) {
        ground = self.childNode(withName: "ground") as? SKSpriteNode
        let move = SKAction.moveBy(x: 1000,y: 1000,duration: 10)
        ground?.run(move)
    
}
    
}

我有 3 个名为“ground”的 sksprite 节点。但只有其中一个运行动作移动。我如何让他们都运行动作移动?感谢您的帮助。

解决方法

您想使用 enumerateChildNodes,这会循环遍历所有节点和名称与 withName 部分匹配的任何节点,运行包含代码。 我们在搜索时找到的任何节点,我们只需将它分配给一个名为 groundNode(可以是任何名称)的常量,并使其成为 SKSpriteNode。从那里,您可以执行任何与 SKSpriteNode 相关的操作,在您的情况下,我们会对其运行 moveBy 操作。

  enumerateChildNodes(withName: "ground") {
                   (node,_) in
                let groundNode = node as! SKSpriteNode
                let move = SKAction.moveBy(x: 1000,y: 1000,duration: 10)
                groundNode.run(move)
  }
,

https://developer.apple.com/documentation/spritekit/sknode/1483024-enumeratechildnodes 就是你想要的。或者在数组中保留对它们的引用。或者将它们命名为 ground1、ground2 等

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。