Swift Sprite Kit重新创建SKSpriteNode的

时间:2015-06-02 14:36:38

标签: ios swift sprite-kit

目前,我正在与Swift一起使用Sprite Kit游戏。

在屏幕上,开头有5个平台。它们都是SKSpriteNode's颜色,看起来完全一样。 当玩家移动时,底部平台移出Y轴的屏幕,新生成的平台在屏幕顶部产生。

现在我很好奇,怎样才能成为平台编码的最佳方式? 我应该创建5个平台,当它们移出屏幕时,它们会再次出现在屏幕顶部吗? 或者我是否在屏幕上重新创建它们?平台没有限制。

平台也会执行SKActions,例如玩家登陆平台后重新开始。

平台示例代码:

Platform = SKSpriteNode (color: SKColor.redColor(), size: CGSize(width: self.frame.size.width , height: 25))
Platform.position = CGPoint(x:self.frame.size.width / 2, y: 40)
Platform.zPosition = 1
addChild(Platform)

1 个答案:

答案 0 :(得分:1)

答案是肯定的:尽可能重用游戏对象。每次实例化一个对象都会产生一些开销。避免这种情况总会更好。

例如,只要您离开屏幕的下限,就可以将org.jetbrains.android.uipreview.RenderingException: This version of the rendering library is more recent than your version of Android Studio. Please update Android Studio at org.jetbrains.android.uipreview.LayoutLibraryLoader.load(LayoutLibraryLoader.java:90) at org.jetbrains.android.sdk.AndroidTargetData.getLayoutLibrary(AndroidTargetData.java:159) at com.android.tools.idea.rendering.RenderService.createTask(RenderService.java:164) at com.intellij.android.designer.designSurface.AndroidDesignerEditorPanel$6.run(AndroidDesignerEditorPanel.java:475) at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:320) at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:310) at com.intellij.util.ui.update.MergingUpdateQueue$2.run(MergingUpdateQueue.java:254) at com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:269) at com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:227) at com.intellij.util.ui.update.MergingUpdateQueue.run(MergingUpdateQueue.java:217) at com.intellij.util.concurrency.QueueProcessor.runSafely(QueueProcessor.java:238) at com.intellij.util.Alarm$Request$1.run(Alarm.java:351) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) at java.util.concurrent.FutureTask.run(FutureTask.java:262) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:745) 设置为屏幕顶部。这应该不难,在可能的情况下始终重用游戏对象。