SKNode无法找到childNodeWithName:
我正在使用childNodeWithName:
方法在SKNode
中搜索SKNode
。 要设置名称,我使用的是NSManagedObjectID
的URI字符串表示,如下所示:
[[managedObjectID URIRepresentation] absoluteString];
这给出了一个节点名称:
的x coredata:// 0856426F-EA66-4D28-A88A-FF49225F69B6 /对象/ P4
但是, childNodeWithName:
方法返回nil。 在调试器中检查时,节点明显存在,还有两个其他节点:
( name:'(null)' texture:['nil'] position:{160, 284} size:{320, 568} rotation:0.00, name:'x-coredata://0856426F-EA66-4D28-A88A-FF49225F69B6/Object/p4' texture:['nil'] position:{31, 537} size:{50, 50} rotation:0.00, name:'x-coredata://0856426F-EA66-4D28-A88A-FF49225F69B6/Object/p1' texture:['nil'] position:{217, 416} size:{50, 50} rotation:0.00 )
为了强化这一点,如果我将节点名称设置为类似“testingName”的节点,则按预期返回节点。
这让我相信Sprite Kit不喜欢我用过的名字。 是否有人知道命名限制,或者可能知道为什么URL格式会在这里出现问题?
谢谢。
这里由@kylefuller回答。
来自Apple:
搜索使用常见的正则表达式语义。
“//” – 当放置在搜索字符串的开头时,这指定搜索应该从根节点开始并在整个节点树上递归执行。 它在搜索字符串中的任何其他位置都不合法。
我想我会在这个问题上浪费几个小时来添加一些关于这个问题的东西。
我的项目有一个Sprite kit场景图如下:
根据Apple的例子, SKScene-> SKNode(myWorld)->SKNode(camera)
。 但是在使用时
var cameraNode = self.childNodeWithName("camera")
返回的节点总是为零。 Apple文档没有提到Andy回答的’//’。 似乎函数childNodeWithName
将仅搜索指定节点的子节点(在本例中为场景)。 我一发现这篇文章,就把线路改成了
var cameraNode = self.childNodeWithName("//camera")
它现在可以找到camera
节点,无论它在场景图中的级别如何。