我在 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)")
}
}
}
最佳答案
为了访问 SKReference 的任何节点,需要在 withName 语句中添加额外的“//”:
if let someSpriteNode:SKSpriteNode = misha.childNode(withName: "//sc01eyelid") as? SKSpriteNode {}
因此 withName: "//sc01eyelid"可以访问 sc01eyelid 节点。
更多信息在这里: https://developer.apple.com/documentation/spritekit/sknode
关于swift - 在 SKReferenceNode 中转换 SKSpriteNode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45366452/