我目前是第一次尝试 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/