小编Tru*_*iTr的帖子

Sprite kit精灵加载性能提升

我正在制作精灵工具包游戏,我正在使用plist文件来设置每个级别的属性.我的plist文件中的一个属性是一个名为patterns的字典,它包含n个项目,其中每个项目都是一个块,带有手动键入的x和y位置.这个模型对于我正在制作的游戏来说非常合适,因为以快速的方式设置关卡非常方便.然而,由于缺乏编码经验,我面临一个我无法解决的缺点:一些级别有多达290个块,所以当应用程序尝试读取级别时,应用程序会冻结5秒钟.这对用户来说非常烦人.在开始时我的方法是:读取plist文件,并为每个项目调用使用其imageNamed""方法创建块作为SKSpriteNode的方法.我认为这就是它落后的原因,我试图在运行时加载300个精灵的事实似乎是这个问题的一个有希望的原因.然后我尝试了以下内容:当游戏第一次启动时,我创建了最初加载块池的方法.这是我的方法

    func addObsticles1ToPool() {

    for i in 0...300 {

       let element = SKSpriteNode(imageNamed: "obsticle1")
       element.hidden = true
       obsticle1Pool.append(element)

    }

}
Run Code Online (Sandbox Code Playgroud)

然后,我的代码读取plist文件,并为每个块调用以下内容:

func block(x: CGFloat, y: CGFloat, movingUp: Bool, movingSide: Bool, spin: Bool, type: Int16) {

    var block: SKSpriteNode!
    for obs in obsticle1Pool {

        if obs.hidden {

            block = obs
            break

        }

    }


  block.hidden = false
  // Further down the properties of the block are set, such as actions it should perform depending on the input values, also its physics body …
Run Code Online (Sandbox Code Playgroud)

ios sprite-kit swift

5
推荐指数
1
解决办法
445
查看次数

标签 统计

ios ×1

sprite-kit ×1

swift ×1