Oby*_*by1 2 xcode ios7 sprite-kit skspritenode
我是objectif-c和sprite-kit开发的新手(但不是编程).所以我开始使用Apple的Spri.该应用程序完美无缺,但是当岩石落入场景底部时,表示岩石的节点会自动从其父节点移除.这个,没有实现 - (void)didSimulatedPhysics方法:
- (void)didSimulatedPhysics
{
[self enumerateChildNodesWithName:@"rock" usingBlock:^(SKNode *node, BOOL *stop) {
if (node.position.y < 0)
[node removeFromParent];
}];
}
Run Code Online (Sandbox Code Playgroud)
我可以看到屏幕上显示的节点计数器:它不会随着岩石的数量而增加.所以我的问题是:Xcode是否为我的程序管理removeFromParent方法?如果是,你能告诉我禁用的选项.我尝试将ARC设置为NO,但它没有任何改变.
我希望我的信息很清楚.如果没有,请告诉我.提前感谢您的回答.
拉斐尔
我可以看到屏幕上显示的节点计数器:它不会随着岩石的数量而增加.
这是因为Sprite Kit默认只计算"渲染"节点(即屏幕上的节点).要查看已淘汰的节点,您必须启用其他未记录的调试标志:
[self.scene.view setValue:@(YES) forKey:@"_showsCulledNodesInNodeCount"];
Run Code Online (Sandbox Code Playgroud)
或者,要获取节点(例如场景)的真实节点数,请将此位置添加到要记录节点计数的位置:
NSLog(@"node count: %u", (unsigned int)self.children.count);
Run Code Online (Sandbox Code Playgroud)
换句话说:如果您不从其父节点中删除节点,则Sprite Kit 在任何情况下都不会自动执行此操作.然而,如果没有任何保留周期(通常在自定义SKNode子类中保持对父节点或兄弟节点的强引用时找到),它将在呈现新场景时清除旧场景的节点图.