首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >雪碧工具包精灵装载性能的改进

雪碧工具包精灵装载性能的改进
EN

Stack Overflow用户
提问于 2015-05-24 20:53:46
回答 1查看 595关注 0票数 5

我正在制作一个精灵工具包游戏,我使用plist文件来设置每个级别的属性。我的plist文件中的一个属性是一个名为patterns的字典,它包含n个条目,其中每个项都是块,并且手工键入x和y位置。这种模式是非常好的工作类型的游戏,我正在制作,因为它是非常方便地设置正确的水平在一个快速的方式。然而,由于缺乏编码经验,我面临一个无法解决的缺点:一些级别有290块,所以当应用程序试图读取该级别时,应用程序会冻结大约5秒。这对用户来说很烦人。在开始时,我的方法是:读取plist文件,并对每一项调用使用其SKSpriteNode "“方法将块创建为imageNamed的方法。我认为这就是它滞后的原因,我试图在运行时加载300个精灵这一事实似乎是造成问题的一个有希望的原因。然后我尝试了以下方法:当游戏第一次开始的时候,我做了一个最初加载块池的方法。这是我的方法

代码语言:javascript
运行
复制
    func addObsticles1ToPool() {

    for i in 0...300 {

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

    }

}

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

代码语言:javascript
运行
复制
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 is set. 

我也有一些方法来处理这样一个事实,即新元素应该作为游戏、收益和一切都被添加到池中。滞后时间下降到3.5-4秒左右,但这仍然不够明显。我想要一场没有滞后的比赛。然而,我不确定是否有另一种更有效的方法来做我想做的事情,而不是使用精灵池。有人知道如何减少这种滞后时间吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-26 01:21:39

我也遇到过同样的问题!问题就在这条线上。

代码语言:javascript
运行
复制
let element = SKSpriteNode(imageNamed: "obsticle1")

SpriteKit不够聪明,不知道已经用该图像创建了纹理。所以它所做的就是一次又一次地创造这种纹理,这是昂贵的。

相反,首先在循环之外创建一个纹理,然后用纹理创建sprite节点。就像这样..。

代码语言:javascript
运行
复制
let elementTexture = SKTexture(imageNamed: "objstical1")

for i in 0...300 {

    let element = SKSpriteNode(texture: elementTexture)
    element.hidden = true
    obsticle1Pool.append(element)

}

这不仅会加快速度,还会减少你的应用程序内存和ton...assuming,这是我遇到的问题。希望这能帮上忙。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30428220

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档