Xcode如何自动从其父节点删除skspritenode';s节点
我是objectif-c和sprite工具包开发方面的新手(但不是编程方面的)。所以我要开始苹果的Spri。该应用程序工作完美,除了当岩石从场景底部掉落时,代表岩石的节点会自动从其父节点移除。在不实施-(void)didSimulatedPhysics方法的情况下:Xcode如何自动从其父节点删除skspritenode';s节点,xcode,ios7,sprite-kit,skspritenode,Xcode,Ios7,Sprite Kit,Skspritenode,我是objectif-c和sprite工具包开发方面的新手(但不是编程方面的)。所以我要开始苹果的Spri。该应用程序工作完美,除了当岩石从场景底部掉落时,代表岩石的节点会自动从其父节点移除。在不实施-(void)didSimulatedPhysics方法的情况下: - (void)didSimulatedPhysics { [self enumerateChildNodesWithName:@"rock" usingBlock:^(SKNode *node, BOOL *stop) {
- (void)didSimulatedPhysics
{
[self enumerateChildNodesWithName:@"rock" usingBlock:^(SKNode *node, BOOL *stop) {
if (node.position.y < 0)
[node removeFromParent];
}];
}
-(void)模拟物理
{
[使用block:^(SKNode*node,BOOL*stop)的名称为@“rock”的自枚举子节点{
if(节点位置y<0)
[节点从父节点移除];
}];
}
我可以看到屏幕上显示的节点计数器:它不会随着岩石数量的增加而增加。
所以我的问题是:Xcode是否管理我的程序的removeFromParent方法?如果是,你能告诉我禁用的选项吗。我试着将ARC设置为NO,但没有任何改变
我希望我的信息是明确的。如果没有,请告诉我。提前谢谢你的回答
拉斐尔
我可以看到屏幕上显示的节点计数器:它没有
随着岩石数量的增加而增加
这是因为Sprite工具包默认情况下只计算“渲染”节点(即屏幕上的节点)。要查看剔除的节点,必须启用一个附加的、未记录的调试标志:
[self.scene.view setValue:@(YES) forKey:@"_showsCulledNodesInNodeCount"];
或者,要获取节点(如场景)的真实节点计数,请将此添加到要记录节点计数的位置:
NSLog(@"node count: %u", (unsigned int)self.children.count);
换句话说:如果您不从其父节点移除节点,Sprite Kit在任何情况下都不会自动执行此操作。但是,在呈现新场景时,如果没有任何保留循环(通常在自定义SKNode子类中对父节点或同级节点进行强引用时发现),它将清除旧场景的节点图。在命令SKView呈现场景之前,必须调用以下行:
SKView * skView = (SKView *)self.view;
skView.showsFPS = YES;
skView.showsNodeCount = YES; // This is what shows the node count.
根据苹果的文档,showsNodeCount属性描述为:
一个布尔值,指示视图是否显示
节点在场景中可见
因此,精灵套件不会将它们从父对象中移除。如果这些节点返回到视图的边界,它们将依次增加此节点计数。节点计数表示当前在可视区域中的节点,即必须由sprite kit为该帧渲染的节点。是否有方法查看总节点计数(包括
alpha=0的节点)
?