这是我关于堆栈溢出的第一个问题,是的。无论如何,我试图为我的SKScene创建一个“重新加载”按钮。为此,我创建了一个名为“ EDSpriteNodeButton”的新SKSpriteNode子类。在此子类文件中,我创建了一个协议,因此可以从场景中访问方法。这是我的协议代码:
protocol EDSpriteNodeButtonDelegate: AnyObject {
func spriteNodeButtonPressed(_ button: EDSpriteNodeButton)
}
然后我回到我的关卡场景并添加了我的自定义委托...
class Level1Scene: SKScene, SKPhysicsContactDelegate, EDSpriteNodeButtonDelegate {
然后,将我的SKSpriteNode(用作按钮的类)的类设置为“ EDSpriteNodeButton”,从我的按钮中创建一个var
,然后将其设为childNode,并在其底部调用我的方法我的班级。
var reloadSceneButton = EDSpriteNodeButton()
reloadSceneButton = self.childNode(withName: "reloadSceneButton") as! EDSpriteNodeButton
reloadSceneButton.isUserInteractionEnabled = true
reloadSceneButton.delegate = self
func reloadSceneRequested(_ button: EDSpriteNodeButton) {
self.removeAllChildren()
self.removeAllActions()
self.scaleMode = .aspectFill
self.scene?.view?.presentScene(self, transition: SKTransition.fade(withDuration: 1.0))
但是当调用reloadSceneRequested()
时,出现致命错误:
Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value
。
有人知道如何让我的SKScene完全重新加载(例如,这是第一次运行)吗?
答案 0 :(得分:1)