如何使用动画

时间:2016-09-13 20:49:10

标签: swift sprite-kit cpu skspritenode

我在Swift和SpriteKit中制作了我的第一个游戏,并且遇到了无数的CPU问题,在玩了几分钟游戏后我接近100%的CPU。这似乎不应该发生,因为我真的只是一次吸引20个动画的敌人。虽然这不是唯一的问题,但我认为实例化我的敌人类会对这种过度使用造成很大影响。

在我的代码中,我每隔几秒就会实例化一个新的敌人。我相当肯定我正在将它们正确地移除 - 无论是在接触时还是在他们离开屏幕时。所以我相信我的下一次尝试应该是尝试回收它们,而不是不断地完全删除和添加它们。

我添加:

func addNormAlien(){
    let mult = normAlienMultiplers

    let alienInst = normAlien(startPos:CGPoint(x: 10,y: 10), speed: random(UInt32(10), max: UInt32(50))*mult[0])

    let yStart = random(UInt32(alienInst.size.height/2), max: UInt32(size.height-alienInst.size.height))
    alienInst.position = CGPoint(x:size.width+alienInst.size.width/2, y:yStart)

    addChild(alienInst)
    totalNodes+=1
}

并删除一般声明:alien.removeFromParent()在两种联系方式中,如果它的x位置超过某个点,则更新。

我在想我可以创建一个适合某个最大数量的数组(或队列?),并且可以将它们打开和关闭。有没有正确的方法来回收像这样的SKSpriteNode子类?附:什么是适当的CPU使用范围 - 在iPhone上测试时?

1 个答案:

答案 0 :(得分:1)

我说你应该看看at the prototype pattern。你基本上只是第一次创建每个敌人并克隆它们以便在游戏中使用。至少这应该减少文件系统交互(加载纹理等......)。