标签: skreferencenode

在SpriteKit SWIFT中获取SKReferenceNode的子节点

我在一个SKSpriteNode(名称:square)和一个SKLabel(name:label)中创建了一个场景Case.sks(使用Level Editor).在我的主场景GameScene.sks中,我使用带有"Case"的SKReferenceNode作为参考.

我需要从我的主场景中访问"方形"精灵.

我的第一个想法是直接调用子节点:

 let firstSquare = childNode(withName: "square") as! SKSpriteNode
Run Code Online (Sandbox Code Playgroud)

但我得到了:

 Fatal error: unexpectedly found nil while unwrapping an Optional value
Run Code Online (Sandbox Code Playgroud)

所以我尝试过:

 let caseRef = childNode(withName: "Case") as! SKReferenceNode
 let firstSquare = caseRef.childNode(withName: "square") as! SKSpriteNode
Run Code Online (Sandbox Code Playgroud)

但我得到了第一个广场线:

 Fatal error: unexpectedly found nil while unwrapping an Optional value
Run Code Online (Sandbox Code Playgroud)

如何获取参考场景的子节点?

sprite-kit skspritenode swift skreferencenode xcode8-beta2

5
推荐指数
1
解决办法
2323
查看次数

将SKReferenceNode/SKScene添加到SpriteKit中的另一个SKScene

我想在我的主GameScene上添加一个SKScene.SKReferenceNode似乎是一个很好的解决方案.

我有: - GameScene.sks(主场景) - Countdown.sks(添加到GameScene的场景) - Countdown.swift(自定义类,如何初始化它?SKScene?SKReferenceNode?SKNode)

我不知道如何使用我的Countdown类以编程方式添加我的倒计时.

我试过了:

 let path = Bundle.main.path(forResource: "Countdown", ofType: "sks")
 let cd = SKReferenceNode (url: NSURL (fileURLWithPath: path!) as URL) as! Countdown
 cd.name = "countdown"
 self.addChild(cd)
Run Code Online (Sandbox Code Playgroud)

但是我有以下错误:

 Could not cast value of type 'SKReferenceNode' (0x10d97ad88) to 'LYT.Countdown' (0x10a5709d0
Run Code Online (Sandbox Code Playgroud)

我也尝试过更简单的东西:

 let cd=Countdown(scene:self) 
 self.addChild(cd)
Run Code Online (Sandbox Code Playgroud)

但我不知道如何使用Countdown.sks文件初始化该类.

我知道我也有可能创建一个SKNode类,并以编程方式100%初始化它,但对我来说使用相关的.sks文件以使用Xcode场景编辑器非常重要.

sprite-kit skspritenode skscene swift skreferencenode

3
推荐指数
1
解决办法
920
查看次数