ios - Sprite 一旦超过屏幕高度就会自行移除

标签 ios sprite-kit skaction

我目前是第一次尝试 SpriteKit 并使用一些 Action 。我的印象是,您创建的每个节点/ Sprite 都需要将其删除,但由于某种原因,一旦它们超过屏幕高度,它们就会被自己删除。这是 SpriteKit 中的正常行为吗?

这是代码。 我基本上是在使用一个 Action 在屏幕上设置 Sprite 动画(在 protrait 模式下从下到上),有趣的是无论我创建多少 Sprite ,节点数都保持为 0,它实际上对它们进行计数,但它一旦它们超过屏幕高度就减去它们。

-(void) shoot
{
    bullet = [SKSpriteNode spriteNodeWithImageNamed:@"bullet"];
    bullet.position =  CGPointMake(airPlane.position.x, airPlane.position.y + 50);
    [self addChild:bullet];

    SKAction *moveBullet = [SKAction moveTo:CGPointMake(airPlane.position.x, self.size.height + 20) duration:0.5];

    [bullet runAction:moveBullet];
}

如果我将我的 Action 更改为 Sprite 未穿过屏幕高度的位置,则节点计数将保持计数。

改变这一行...

SKAction *moveBullet = [SKAction moveTo:CGPointMake(airPlane.position.x, self.size.height + 20) duration:0.5];

...为此

SKAction *moveBullet = [SKAction moveTo:CGPointMake(airPlane.position.x, self.size.height) duration:0.5];

同样,这是 SpriteKit 中的正常行为吗?

非常感谢

最佳答案

右下角显示的节点数只是屏幕上正在渲染的节点的指示。它们并不表示场景中的节点总数。

使用下面的代码

[skView setValue:@(YES) forKey:@"_showsCulledNodesInNodeCount"];

在你打电话的同一个地方

skView.showsFPS = YES;
skView.showsNodeCount = YES;

另外,请看一下这个answer .

关于ios - Sprite 一旦超过屏幕高度就会自行移除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24351033/

相关文章:

ios - 随机化太空游戏 PowerUp 生成

swift - 停止正在运行的 SKAction - Sprite Kit

ios sqlite 未使用 Xcode 打开(但从 cli) - ionic

ios - 如何使 TableView 标题静态/不可滚动

swift - 无法将类型 'NSMutableArray' 的值转换为预期的参数类型 '[SKAction]'

sprite-kit - 如何创建波浪路径 Swift

ios - CAShapeLayer 线条的圆角

ios - 在 Swift 中以编程方式将 UIGestureRecognizer 添加到 subview

objective-c - 在 waitforCompletion 为 YES 时立即删除 SKAction(正在播放 MP3)

swift - 触摸 Sprite,使其跳起来然后再次落下(重复点击 spritenode 的次数。)