目前,我正在与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)
答案 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)
设置为屏幕顶部。这应该不难,在可能的情况下始终重用游戏对象。