1

我在 Xcode 的场景编辑器中构建了一个 Scene1。我已经引用了另一个场景,该场景对此 Scene1 有动画。

现在,我正在尝试丢弃位于 SKReferenceNode 内的 SKSpriteNode。我试图在一个被引用的场景上投射的 SKSpriteNode 的名称是:“sc01eyelid”。

有什么建议我可能会在这里做错吗?

先感谢您。

import SpriteKit
import GameplayKit

class Scene1: SKScene {
    var misha: SKReferenceNode = SKReferenceNode()
    var eyelidForScene1:SKSpriteNode = SKSpriteNode()

override func didMove(to view: SKView) {        
    castMishaForScene1()
    castOutEyelid()
}

//Casting out misha
func castMishaForScene1() {
    if let someSpriteNode:SKReferenceNode = self.childNode(withName: "mishaRefNode") as? SKReferenceNode {
        misha = someSpriteNode
        print("CASTED\(misha)")
    }
    else {
        print("could not cast\(misha)")
    }
}

//Casting out eyelid
func castOutEyelid() {
    if let someSpriteNode:SKSpriteNode = misha.childNode(withName: "sc01eyelid") as? SKSpriteNode {
        eyelidForScene1 = someSpriteNode
        print("CASTED\(eyelidForScene1)")
    }
    else {
        print("could not cast\(eyelidForScene1)")
    }
}
}
4

1 回答 1

1

为了访问 SKRefference 的任何节点,需要在 withName 语句中添加额外的“//”:

if let someSpriteNode:SKSpriteNode = misha.childNode(withName: "//sc01eyelid") as? SKSpriteNode {}

所以 withName: "//sc01eyelid" 可以访问 sc01eyelid 节点。

更多信息: https ://developer.apple.com/documentation/spritekit/sknode

于 2017-07-31T09:32:44.460 回答