首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Swift导入SpriteKit中的外部节点

使用Swift导入SpriteKit中的外部节点
EN

Stack Overflow用户
提问于 2017-03-18 14:08:08
回答 2查看 297关注 0票数 3

我在做一个越狱式游戏。我在一个不同的场景(PaddleScene.sks)中创建了这个桨,这样我就可以在多个级别上引用它。还不确定这是怎么回事,还是个新手。

我通过GameScene.sks通过SKReferenceNode添加了桨,并在代码中引用它,如下所示:

代码语言:javascript
复制
paddle = self.childNode(withName: "//paddle") as! SKSpriteNode

这是可行的,但问题是现在paddle.position.x给了我0,因为这是它在PaddleScene.sks中的位置。所以我必须使用SKReferenceNode来获得GameScene内部的位置。

代码语言:javascript
复制
paddleRef = self.childNode(withName: "paddleScene") as! SKReferenceNode

所以现在我必须跟踪两个变量,而不是一个变量。是否有更容易的方法在我的场景中导入外部对象而不具有多个变量?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-18 18:12:49

你能贴出你用来创建桨的代码吗?还有您在GameScene中引用桨的代码吗?

引用的节点(在您的例子中是paddle)是SKReferenceNode的子节点。这意味着您的划桨分配行应改为:

代码语言:javascript
复制
let paddle = paddleRef.childNode(withName: "paddle")

然后,您应该只需要使用paddle而不是使用paddleRef。

或者,我会为paddle创建一个专用类,作为SKSpriteNode的一个子类。它将处理与桨有关的一切-它的位置,旋转,大小,透明度,图像,颜色,等等。

然后,在任何场景中重用paddle就变得非常容易了--只需在场景代码中创建这个类的实例,如下所示:

代码语言:javascript
复制
let paddle = Paddle()

(我想你会把你的桨类命名为“桨”)。然后,您只处理一个对象,而您的paddle属性将正常工作-- paddle.position、paddle.zRotation、paddle.size等。

如果您需要任何关于如何设置paddle类的帮助,请告诉我。

斯托扬

票数 1
EN

Stack Overflow用户

发布于 2017-03-18 22:14:56

我最近开始使用场景编辑器(几乎),我喜欢我的对象的视觉布局。我为复杂的对象(不仅仅是场景)创建场景(sks)文件,并使用引用节点将它们放在我的场景文件中,以便在多个场景中重用它们,并直观地查看它们的布局。我还没有找到一种绕过双重引用的方法,但这就是我在代码中处理引用节点的方式。这种方法允许我将它们放置在场景编辑器中,但仍然可以在不关心额外对象的情况下定位。

代码语言:javascript
复制
if let paddleReference = self.childNode(withName: "paddle") as? SKReferenceNode {

    let paddleNode = paddleReference.getBasedChildNode() as? SKSpriteNode

    self.paddle = paddleNode?.copy() as! SKSpriteNode
    paddle.position = (paddleReference.position)
    addChild(paddle)
    paddleNode?.removeFromParent()
    print("paddle.position \(paddle.position)")
}


extension SKReferenceNode {

    func getBasedChildNode() -> SKNode? {
        if let child = self.children.first?.children.first { return child }
        else { return nil }
    }
}

@SimonePistecchia是这个扩展Add SKReferenceNode/SKScene to another SKScene in SpriteKit的信贷来源

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42875397

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档