我想要实现的目标很简单。我希望某些 SKNode(或子类的对象)在添加到场景后消失一定时间。
这当然可以通过在子类中实现一个计数器来轻松完成,该计数器会随着时间的推移而计时,并在达到 0 后将节点从场景中删除。另一个想法是将 SKAction.waitForDuration: 操作以及随后从父节点中删除该节点的操作。
我希望SKNode中已经实现了类似的功能,但找不到任何有希望的东西。
我是否遗漏了什么,或者我必须自己实现吗?
(请注意,这更多的是为了了解 SpriteKit,而不是关于自己实现这个是否麻烦)
奖励问题如果第一个问题的答案是(如预期)否: 什么是更有效的方法,使用前面提到的 SKAction 方法,或者在我的子类上使用“生命周期”实例变量和一个方法(由场景的 update: 方法调用),对该变量进行倒计时? 我的场景中可能有很多这些对象,而且它们的持续时间也可能不止几秒钟。
最佳答案
SKNode
并不是为了处理定时删除之类的事情而设计的。
SKAction
旨在处理这些类型的事情,例如:
SKAction *actionWait = [SKAction waitForDuration:3];
SKAction *actionRemove = [SKAction removeFromParent];
SKAction *sequence = [SKAction sequence:@[actionWait, actionRemove]];
[self runAction:sequence];
如果您愿意,您可以子类化 SKNode
并将该代码包装到一个方法中,或者创建一个类别并实现该方法。
关于objective-c - SK节点生命周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24705291/