gpt4 book ai didi

ios - Swift 和 spritekit,性能

转载 作者:行者123 更新时间:2023-11-28 05:30:34 24 4
gpt4 key购买 nike

我在让我的游戏在 Swift/SpriteKit 中运行时遇到了一些问题,并且无法在其他地方找到答案,所以我希望能在这里得到帮助。

我有一个充满 sksprite 节点的屏幕,大约有 1800 个节点,当我的手指移过它们时,它们就会消失。

我最初是通过在我的手指下拖动一个隐藏的节点来使用物理学来实现这个工作的,但是我刚刚将它加载到我的手机上并且性能没有达到标准。

然后我重新设计它以使用“containsPoint”。

现在在静止时性能更好(60FPS),但是每当我触摸屏幕时就会挂起,CPU 会上升。

这是因为它必须在每次移动时循环遍历每个图 block 的位置,每次移动超过 1800 次计算,并将其与我当前的触摸进行比较。

有人可以提出更优雅的解决方案吗?我试过使用字典,但它提示 CGPOINT 不可哈希。

我把相关代码贴在下面,非常感谢!

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()
}

最佳答案

你可以使用:

self.nodeAtPoint(point: CGPoint)

self.nodesAtPoint(point: CGPoint)

通过触摸位置找到被触摸的节点,然后可以改变节点的alpha

关于ios - Swift 和 spritekit,性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28727815/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com