【发布时间】:2016-11-07 23:28:26
【问题描述】:
我正在使用 SpriteKit 编写游戏,并且正在编写从文本文件加载“关卡”的部分,在文本文件中每个用“x”标记的位置放置一个墙节点。但是,如果我知道会有很多节点,并且它们都是从同一个“wall.png”文件加载的,那么加载一次图像然后在每次需要时复制对象是否更有效,还是每次都加载图片?
for line in lines {
for letter in line {
if letter == "x" {
let wall = SKSpriteNode(imageNamed: "wall")
self.addChild(wall)
} else { ... }
}
}
VS
let wall = SKSpriteNode(imageNamed: "wall")
for line in lines {
for letter in line {
if letter == "x" {
self.addChild(wall.copy())
} else { ... }
}
}
此范围内的self 是一个持有扩展 SKNode 的关卡的类,因此我将向self 添加墙,然后将该 SKNode 添加到场景中。
【问题讨论】:
-
尝试这两种方法并计算在 iOS 收到内存不足警告之前可以添加多少。
-
我更多地考虑加载它们的速度,我假设加载后两者的内存使用量相似?
-
我觉得差不多,代码的复杂度是2^n,由2个for循环驱动,行self.addChild(wall.copy())或者let wall = SKSpriteNode( imageNamed: "wall") 可能不会增加更多时间。您可以尝试在for循环的开始和结束时添加增量时间并检查。
标签: swift image sprite-kit skspritenode 2d-games