2014-03-20 2 views
1

모든 게임 내 애니메이션에 대해 강한 SKAction 초를 미리 설정하면 나중에 사용할 수 있도록 Sprite Kit에 의해 캐시 된 실제 이미지 데이터입니다. 내가 이해하려고하는 것은 내가 보유하고있는 모든 애니메이션을 설정하는 것입니다. SKAction은 원래 SKTextureAtlas을 미리로드하는 데 어떤 점이 있습니까? SKAction의 이미지가 이미 메모리에로드되어 있기 때문에 내 생각은 아닙니다.사전 설정 SKAction에 SKTextureAtlas를 미리로드해야합니까?

for(NSUInteger index=1; index<=15; index++) { 
    NSString *image = [NSString stringWithFormat:@"Drone_FLYING_%04ld", (long)index]; 
    SKTexture *texture = [SKTexture textureWithImageNamed:image]; 
    [[self framesDroneFlying] addObject:texture]; 
} 

[self setDroneFlyAction:[SKAction animateWithTextures:[self framesDroneFlying]   timePerFrame:DRONE_FLY_SPEED]]; 

나는 저자들이 코드의 단일 preloadTextureAtlases을하지 SKTextureAtlas (들)을 많이 사용하지만 애플 모험 예에서이 추측하고있다.

+0

SK가 즉시 텍스처를로드합니다. 그러나 SKActions를 미리로드하는 것은 너무 멀리 찍는 것처럼 보이며, 즉석에서 만들 수있는 가벼운 오브젝트이며, 모든 애니메이션에 대해 새로운 액션을 만드는 것보다 저장 장치에서 가져 오는 것이 좋습니다. 실제 측정으로 입증되어 차이를 만들어 내고 앱이 영향을받을 때까지 손쉬운 접근 방식을 택하십시오. 그렇지 않으면 조숙 한 최적화입니다. – LearnCocos2D

+0

하지만 ship_x가 처음 화면에 표시 될 때 텍스처를로드하는 것을 원하지 않습니다. 내가 얻으려고하는 것은 자산을 사전 설정하는 최선의 방법입니다. 따라서 게임 중반에 히트를 치지 않아야합니다. – fuzzygoat

+0

SKTextureAtlas 사전로드 메서드를 사용하고 atlas 개체에 대한 강력한 참조를 유지합니다. 그러면 아틀라스의 모든 텍스처가 메모리에 유지됩니다. 위의 코드를 변경하지 않고 이미지를로드하는 대신에 atlas를 볼 수 있습니다. - 정확하게 atlas를 설정해야합니다 (예 : .atlas 폴더에서 모든 리소스를 그룹 대신 참조로 사용하고 동일한 이미지 파일을 추가하지 않음). 프로젝트의 다른 곳에있는 이름). – LearnCocos2D

답변

1

텍스처 (아틀라스의)를 캐시에 유지하려면 SKTextureAtlas 사전로드 메소드를 사용하고 아틀라스 오브젝트에 대한 강력한 참조를 유지하십시오. 그게 전부입니다. 그러면 아틀라스의 모든 텍스처가 메모리에 유지됩니다.

위의 코드를 변경하지 않고 이미지를로드하는 대신 아트라스에서 볼 수 있습니다. - 정확하게 atlas를 설정해야합니다 (예 : 그룹 대신 참조로 모든 리소스가있는 .atlas 폴더, 이미지를 추가하지 않음). 프로젝트와 동일한 이름을 가진 파일).

관련 문제