我正在使用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添加到场景中。
答案 0 :(得分:1)
在不诉诸第三方支持的情况下回答您的问题
使用第二个选项(复制选项)
这将在多个精灵中使用相同的纹理,其中第一个选择在每次迭代时都会创建一个新纹理。
答案 1 :(得分:0)
开发项目的方法记住了TileMap。请注意,因为你可以花很多时间来加载每个元素,你可以准备你的关卡,你会有更多的乐趣。
有数千个教程可以帮助您使用Sprite-kit和Swift构建TileMap。他们中的许多人使用这个名为 JSTileMap here
的GitHub库在这些教程中,您可以学习如何:
滚动地图以关注播放器
使用对象图层。
这非常简单,例如您可以加载tmx
地图:
let tiledMap = JSTileMap("mapFileName.tmx") //map name
if t = tileMap {
self.addChild(tiledMap)
}