현재 SpriteKit 및 SKTexture 사전로드에 이상한 간헐적 인 문제가 있습니다. 나는 다음과 같은 형식으로 미리로드 된 이미지의 여러 배열이 있습니다SpriteKit가 때때로 SKTexture를로드하지 못합니다.
- (NSDictionary *)loadTexturesWithNames:(NSArray *)aNames
{
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
NSMutableArray *textureArray = [NSMutableArray array];
for (NSString *textureName in aNames)
{
SKTexture *texture = [SKTexture textureWithImageNamed:textureName];
if (texture)
{
[textureArray addObject:texture];
[dict setObject:texture forKey:textureName];
}
}
[SKTexture preloadTextures:textureArray withCompletionHandler:^{
_iCounter++;
[self loadTextures];
}];
return dict;
}
이 시간의 90 잘 %를 작동하지만 때때로을 다음과 같은 에러가 발생
이SKTexture: Error loading image resource:
이가 발생하지 않습니다 특정 이미지 세트, 무작위. 때로는 플레이어가 잘로드되고 그렇지 않은 플레이어도로드됩니다. 이것이 메모리 문제일까요? _iCounter를 사용하여 텍스처로드를 분할하여 이전 이미지 세트가로드되기 전에로드가 너무 많아 동시 로딩을 시도하지 않도록합니다. 이 과정이 빨라졌지만 여전히 간헐적 인 문제가 있습니다.
다른 사람이 본 적이 있습니까? 또는이 문제를 일으킬 수있는 아이디어가 있습니까?
안녕하세요, 텍스처를 미리로드 할 때 현재 내가하는 것처럼 참조를 저장하는 데 오버 헤드가 있습니까? 나는. 간단히 텍스처를로드 한 다음 [SKSpriteNode spriteNodeWithImageNamed : @ "image"]를 호출하는 것이 좋습니다. 모든 이미지가 미리로드 될 때까지는 텍스처를 사용하지 않지만 호출을 완전히 분리하여 문제가 아닌지 두 번 확인합니다. –
일단 loadTexturesWithNames : 메서드가 반환되고 배열이 loadTexture로 전달되지 않으면 textureArray가 해제됩니다. Sprite Kit에서 텍스처 캐싱이 구현되는 방식에 따라 실제로 미리로드가 null이거나 무효화 될 수 있습니다. – LearnCocos2D
머리에 못을 박았을 것으로 생각합니다. 전반적으로 유지 된 배열에 저장 했으므로 이제는 제대로로드 된 것 같습니다. 도와 주셔서 감사합니다. –