gpt4 book ai didi

xcode - Xcode 如何自动从其父节点中删除 skspritenode

转载 作者:行者123 更新时间:2023-12-02 21:28:45 24 4
gpt4 key购买 nike

我是 objectif-c 和 sprite-kit 开发的新手(但不是编程)。所以我要开始苹果的Spri。该应用程序运行完美,只是当岩石落入场景底部时,代表岩石的节点会自动从其父节点中删除。这,没有实现 -(void)didSimulatedPhysics 方法:

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

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

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

拉斐尔

最佳答案

I can see that with the nodes counter shown on the screen : it doesn't increase with the number of rocks.

这是因为 Sprite Kit 默认只计算“渲染”节点(即屏幕上的节点)。要查看剔除的节点,您必须启用附加的、未记录的调试标志:

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

或者,要获取节点(例如场景)的真实节点计数,请将其添加到要记录节点计数的位置:

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

换句话说:如果您不从其父节点中删除节点,Sprite Kit 在任何情况下都不会自动执行此操作。然而,在呈现新场景时,它会清除旧场景的节点图,前提是没有任何保留周期(通常在自定义 SKNode 子类中持有对父节点或同级节点的强引用时发现)。

关于xcode - Xcode 如何自动从其父节点中删除 skspritenode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22811296/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com