2016-09-19 108 views
0

我正在試驗一下Sprite Kit,我注意到當我讓我的應用程序運行一段時間後崩潰。應用程序崩潰:內存問題?

我想要做的,是畫遵循我的球員運動的線,我這樣做,像這樣:

var ref: CGMutablePathRef = CGPathCreateMutable() 
var shapeLine: SKShapeNode! 

override func update(){ 

shapeLine.removeFromParent() 

CGPathAddLineToPoint(ref, nil, player.position.x, player.position.y) 

shapeLine = SKShapeNode(path: ref) 
shapeLine.lineWidth = 3 
shapeLine.path = ref 

addChild(shapeLine) 
} 

這工作得很好,我刪除節點每次,更新路徑,並用新路徑創建另一個節點。

重點是幾秒鐘後(約25)它崩潰。 節點是不變的,因爲我每次都添加和刪除節點。幀速率在碰撞前開始減小,並從30fps變爲20fps。

我覺得奇怪的是內存的使用,它增加了很多,甚至在崩潰前使用大約800MB。

有沒有我遺忘的東西,還是隻是道路增加太多而無法處理?

+0

爲什麼不嘗試做一個實驗來改變已經存在的'shapeLine'的路徑,以查看問題的一部分是否來自不斷創建新的'SKShapeNode'。換句話說,創建'shapeLine'一次,然後在其他時間,只需更新路徑。 –

+0

已經嘗試過,結果相同:/ – DevX10

+0

運行頻率如何?每一幀?例如,在25秒內,調用了多少次'update'? –

回答

0

不幸的是SKShapeNode被竊聽,這個庫組件周圍有很多bug,其中大部分報告爲here

您可以將SKShapeNode轉換爲紋理(textureFromNode),而不是將其與SKSpriteNode配合使用。

+0

嗨,謝謝你的回答,你是什麼意思,通過使用'textureFromNode',你可以舉一個例子,說明如何使用它並讓它工作,因爲我無法設法 – DevX10