Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xcode如何自动从其父节点删除skspritenode';s节点_Xcode_Ios7_Sprite Kit_Skspritenode - Fatal编程技术网

Xcode如何自动从其父节点删除skspritenode';s节点

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) {

我是objectif-c和sprite工具包开发方面的新手(但不是编程方面的)。所以我要开始苹果的Spri。该应用程序工作完美,除了当岩石从场景底部掉落时,代表岩石的节点会自动从其父节点移除。在不实施-(void)didSimulatedPhysics方法的情况下:

- (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的节点)