初始化节点时找不到值
Can't find the value when initialising a node
我是一名初级程序员。请帮忙。展开子节点时找不到值。不知道为什么。请帮助,谢谢
我的代码:
var someParentNode = SKSpriteNode()
var someChildNode = SKSpriteNode()
override func didMove(to view: SKView) {
someParentNode = self.childNode(withName: "someParentNode") as! SKSpriteNode
someChildNode = self.childNode(withName: "someChildNode") as! SKSpriteNode
问题:展开子节点时出错(在最后一行):
Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value
不确定为什么会出错。正如节点名称所暗示的那样,childNode 是 someParentNode 的父节点。请帮忙。提前致谢:)
代码 someParentNode = self.childNode(withName: "someParentNode") as! SKSpriteNodeself.childNode(withName: "someParentNode")
查找名称为 "someParentNode" 的 SKNode。请记住,这是您可以分配给节点的名称,如 someNode.name = "xyz"
。它不引用行 var someParentNode = SKSpriteNode()
中的变量名称。这是两个不同的东西。
由于node.name == "someParentNode"
处没有节点,函数self.childNode(withName: "someParentNode")
returnsnil
。然后,您使用 as!
执行强制解包,导致错误。
您不需要在 didMove
中调用 someParentNode = self.childNode(withName: "someParentNode") as! SKSpriteNode
,因为您已经创建了一个新的 SKNode
并将这个新的 SKNode
分配给 someParentNode
在第一行。所以不需要再给它分配一个新的节点了。
如果您仍想按名称查找节点,请在调用 self.childNode(withName: "someParentNode")
之前执行 someParentNode.name = "someParentNode"
,但这不是必需的,因为如上所述,您已经创建并分配了一个新的 SKNode
到 someParentNode
。此外,由于您在任何函数之外声明了 someParentNode
,它在您的 SKScene 中具有全局范围,因此您可以在该场景的任何方法中访问它。因此,无需使用方法来查找节点,因为您始终可以访问场景中的该节点。
希望对您有所帮助!同样的推理适用于 someChildNode
我是一名初级程序员。请帮忙。展开子节点时找不到值。不知道为什么。请帮助,谢谢 我的代码:
var someParentNode = SKSpriteNode()
var someChildNode = SKSpriteNode()
override func didMove(to view: SKView) {
someParentNode = self.childNode(withName: "someParentNode") as! SKSpriteNode
someChildNode = self.childNode(withName: "someChildNode") as! SKSpriteNode
问题:展开子节点时出错(在最后一行):
Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value
不确定为什么会出错。正如节点名称所暗示的那样,childNode 是 someParentNode 的父节点。请帮忙。提前致谢:)
代码 someParentNode = self.childNode(withName: "someParentNode") as! SKSpriteNodeself.childNode(withName: "someParentNode")
查找名称为 "someParentNode" 的 SKNode。请记住,这是您可以分配给节点的名称,如 someNode.name = "xyz"
。它不引用行 var someParentNode = SKSpriteNode()
中的变量名称。这是两个不同的东西。
由于node.name == "someParentNode"
处没有节点,函数self.childNode(withName: "someParentNode")
returnsnil
。然后,您使用 as!
执行强制解包,导致错误。
您不需要在 didMove
中调用 someParentNode = self.childNode(withName: "someParentNode") as! SKSpriteNode
,因为您已经创建了一个新的 SKNode
并将这个新的 SKNode
分配给 someParentNode
在第一行。所以不需要再给它分配一个新的节点了。
如果您仍想按名称查找节点,请在调用 self.childNode(withName: "someParentNode")
之前执行 someParentNode.name = "someParentNode"
,但这不是必需的,因为如上所述,您已经创建并分配了一个新的 SKNode
到 someParentNode
。此外,由于您在任何函数之外声明了 someParentNode
,它在您的 SKScene 中具有全局范围,因此您可以在该场景的任何方法中访问它。因此,无需使用方法来查找节点,因为您始终可以访问场景中的该节点。
希望对您有所帮助!同样的推理适用于 someChildNode