我正在制作一个精灵工具包游戏,并且正在使用plist文件设置每个级别的属性。我的plist文件中的一个属性是一个叫做pattern的字典,它包含n个项目,其中每个项目都是一个块,用手键入x和y位置。该模型对于我正在制作的游戏非常适合,因为快速设置等级非常方便。但是,由于缺乏编码经验,我面临一个无法解决的缺点:某些关卡有多达290个块,因此当该应用尝试读取关卡时,该应用冻结了5秒钟。这对于用户来说非常烦人。一开始我的方法是:读取plist文件,并为每个项目调用方法,该方法使用其imageNamed“”方法将块创建为SKSpriteNode。我认为这是它滞后的原因,我试图在运行时加载300个Sprite的事实似乎是问题的有希望的原因。然后,我尝试了以下方法:我制作了一种方法,该方法在游戏首次启动时首先加载一个块池。这是我的方法
func addObsticles1ToPool() {
for i in 0...300 {
let element = SKSpriteNode(imageNamed: "obsticle1")
element.hidden = true
obsticle1Pool.append(element)
}
}
然后,我的代码读取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 is set.
我也有一些方法可以处理这样的事实,即随着游戏的进行,应该将新元素添加到池中,并且一切正常。滞后时间降至3.5-4秒左右,但这显然还不够好。我想要一款没有延迟的游戏。但是,我不确定是否有比使用Sprites池更有效的方法来执行我要执行的操作。有谁知道如何减少这种滞后时间?
我曾经有过同样的问题!问题在这一行…
let element = SKSpriteNode(imageNamed: "obsticle1")
SpriteKit不够聪明,无法知道已经使用该图像创建了纹理。因此,它要做的是一次又一次地创建该纹理,这很昂贵。
取而代之的是先在循环外部创建一个纹理,然后再创建一个带有纹理的精灵节点。像这样
let elementTexture = SKTexture(imageNamed: "objstical1")
for i in 0...300 {
let element = SKSpriteNode(texture: elementTexture)
element.hidden = true
obsticle1Pool.append(element)
}
这不仅会快一吨,还会减少您的应用内存一吨……假设这与我遇到的问题相同。希望有帮助。
我应该有一个正常的贴图如下: 但当我加载场景时,或者从inspector中的另一个场景切换(例如,单击“场景/菜单”,然后单击此场景),或者在游戏中转移到此场景(),精灵会随机不可见。 每次都有一些精灵隐形,下一次隐形的可能就不一样了。我怀疑这是Unity编辑器的问题,因为即使我不在播放模式下也会发生这种情况。 在中,我肯定会找到这些sprite(不是null)。他们就是不出现。我必须重新加载精灵
问题内容: 如果涉及通配符,有什么办法可以加快mysql等操作员的性能吗?例如。如“%test%” 问题答案: 如果查询看起来像或,MySQL可以使用索引。它可以将索引用于第一个通配符之前的任何部分或字符串。如果需要在字符串中的任意位置匹配单词,则可能需要考虑使用索引。 有关索引的更多详细信息: http //dev.mysql.com/doc/refman/5.1/en/mysql- index
本文向大家介绍sprite-kit 您的第一个SpriteKit游戏(Hello World),包括了sprite-kit 您的第一个SpriteKit游戏(Hello World)的使用技巧和注意事项,需要的朋友参考一下 示例 打开Xcode并选择Create a new Xcode Project。 现在iOS > Application,在左侧和Game主选择区域中进行选择。 按下一步。 写
我在我的LibGDX项目中遇到了这个问题,我基本上无法加载我的游戏屏幕,我正在关注一个YouTube教程(链接到我所在的特定教程:https://www.youtube.com/watch?v=LSblkR4K1LU),我发现我的精灵应该出现在我的屏幕上,只是它根本不会加载,它只是打开,关闭然后弹出这个:http://puu.sh/coxUv/d877d08a83.png,我承认我从视频中唯一改变
第 20 章 提升性能
我当时正在研究超载问题,我完全被促销搞糊涂了。我看了SO(函数重载中的隐式转换序列)中的几篇文章,我确信还有一些文章可用,但找不到合适的文章。我也指的是http://www.dcs.bbk.ac.uk/~roger/cpp/week20。htm。我在看Stroustrup的C编程特别版时,看到了下面的解释。 通过在参数表达式的类型和函数的参数(形式参数)之间寻找最佳匹配,可以从一组重载函数中找到要