2016-09-19 4 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

문제의 일부가 새로운'SKShapeNode'의 연속 작성에서 왔는지 확인하기 위해 이미 존재하는'shapeLine'의 경로를 변경하기위한 실험을 시도해보십시오. 다시 말해,'shapeLine'을 한 번 작성한 다음 다른 시간에는 경로를 업데이트하십시오. –

+0

이미 시도한 결과와 동일한 결과가 나타납니다./ – DevX10

+0

얼마나 자주 실행됩니까? 모든 프레임? 예를 들어, 25 초 동안'update'가 몇 번 호출 되었습니까? –

답변

0

불행히도 SKShapeNode이 도청되어이 라이브러리 구성 요소 주변에 많은 버그가 있으며, 대부분이 here으로보고됩니다.

SKSpriteNode과 함께 사용하면 SKShapeNode을 텍스처 (textureFromNode)로 변환 할 수 있습니다.

+0

답변을 주셔서 감사합니다. 'textureFromNode'를 사용하면 무엇을 의미합니까, 어떻게 관리 할 수 ​​없으므로 사용 방법에 대한 예를 들어 주시겠습니까? – DevX10