2014-04-02 25 views
2

我是objectif-c和sprite-kit开发中的新成员(但不是在编程中)。所以我开始了苹果的Spri。该应用程序完美工作,除了代表岩石的节点在岩石从场景底部落下时自动从其父节点移除。这一点,但没有实施 - (空)didSimulatedPhysics方法:Xcode如何自动从其父节点删除skspritenode

- (void)didSimulatedPhysics 
{ 
    [self enumerateChildNodesWithName:@"rock" usingBlock:^(SKNode *node, BOOL *stop) { 
    if (node.position.y < 0) 
     [node removeFromParent]; 
    }]; 
} 

我可以看到在屏幕上显示的节点计数器:它不与岩石的数量增加。 所以我的问题是:Xcode是否为我的程序管理removeFromParent方法?如果是的话,你能告诉我禁用的选项吗?我尝试让ARC拒绝,但它没有做任何改变。

我希望我的信息很清楚。如果没有,请告诉我。预先感谢您的回答。

拉斐尔

+0

节点计数表示当前处于可视区域中的节点,即哪个节点必须由该帧的精灵套件呈现。 – ZeMoon

回答

6

我可以看到在屏幕上显示的节点计数器:它不 增加与岩石的数量。

这是因为Sprite Kit默认只计算“渲染”节点(即屏幕上的节点)。看到被淘汰的节点,您必须启用其他,无证调试标志:

[self.scene.view setValue:@(YES) forKey:@"_showsCulledNodesInNodeCount"]; 

或者,获取一个节点的真实节点计数,如现场,在那里你要记录的节点数添加此:

NSLog(@"node count: %u", (unsigned int)self.children.count); 

换句话说:如果你不从其父删除节点,雪碧套件将不会自动做到这一点在任何情况下。但是,如果没有任何保留周期(通常在对自定义SKNode子类中的父级或同级节点持有强引用时发现),则会在呈现新场景时清除旧场景的节点图。

+0

有没有办法查看总节点数(包括'alpha = 0'的节点)? – fpg1503

0

之前订购的SKView呈现一个场景,你必须调用这些行:

SKView * skView = (SKView *)self.view; 
skView.showsFPS = YES; 
skView.showsNodeCount = YES; // This is what shows the node count. 

从苹果公司的文档中,showsNodeCount属性被描述为:

一个布尔值,指示该视图是否在场景中显示 的节点数可见

因此,Sprite Kit不会将它们从父项中移除。如果这些节点回到视图的边界,它们将反过来增加这个节点的数量。

相关问题