Ios 斯威夫特和斯皮特基特,性能
我在使用Swift/SpriteKit时遇到了一些问题,在其他地方找不到答案,所以我希望能在这里得到帮助 我有一个屏幕,屏幕上布满了sksprite节点,大约1800个,当我的手指移动到它们上面时,它们就消失了 我最初是用物理方法实现的,通过在我的手指下拖动一个隐藏的节点,但是我刚刚将它加载到我的手机上,性能并没有达到要求 然后我重新设计了它,使用“containsPoint” 现在的性能更好时,在休息(60帧/秒),但每当我触摸屏幕是挂起,CPU上升 这是因为它必须在每次移动中循环每个瓷砖的位置,每次移动超过1800次计算,并将其与我当前的触摸进行比较 有人能提出一个更优雅的解决方案吗?我尝试过使用字典,但它抱怨CGPOINT不可散列 我会将相关代码粘贴到下面,非常感谢Ios 斯威夫特和斯皮特基特,性能,ios,performance,swift,sprite,Ios,Performance,Swift,Sprite,我在使用Swift/SpriteKit时遇到了一些问题,在其他地方找不到答案,所以我希望能在这里得到帮助 我有一个屏幕,屏幕上布满了sksprite节点,大约1800个,当我的手指移动到它们上面时,它们就消失了 我最初是用物理方法实现的,通过在我的手指下拖动一个隐藏的节点,但是我刚刚将它加载到我的手机上,性能并没有达到要求 然后我重新设计了它,使用“containsPoint” 现在的性能更好时,在休息(60帧/秒),但每当我触摸屏幕是挂起,CPU上升 这是因为它必须在每次移动中循环每个瓷砖的位
func addTiles() {
let rowsReq=56, colsReq=32
for i in 0..< rowsReq*colsReq {
...
let tileNode:SKSpriteNode = SKSpriteNode()
tilePosArray.append(tileNode.position)
...
}
}
func moveMarker(location: CGPoint){
markerLayer.position=location
for i in 0..<tilePosArray.count {
if (markerLayer.containsPoint(tilePosArray[i])) {
tileTouched(i)
}
}
}
func tileTouched(tileIdInt: Int) {
tileArray[tileIdInt].alpha=0
checkComplete()
}
func addTiles(){
设rowsReq=56,colsReq=32
对于0中的i..
self.nodeAtPoint(point: CGPoint)
或
通过触摸位置来查找正在触摸的节点,然后可以更改节点的alpha在sprite kit上有最佳实践WWDC2014。观看它,也许你会找到一些答案。下半部分重点介绍性能
self.nodesAtPoint(point: CGPoint)