Я пытаюсь загрузить несколько больших моделей в код и показать сцены. Как правило, на загрузку и показ сцены на экране требуется много времени, так как нужно извлечь массу ресурсов из модели подкачки. Итак, я подумал о том, чтобы заполнить первую сцену в основном потоке и оставить остальных в отдельном потоке. Но это сбой, когда я перемещаю код своей части в отдельный поток. Вот мой пример кода:Cocos3d: Сбой при загрузке сцены в отдельной теме или фоновом потоке:
-(void) loadFirstScene
{
CC3PODResourceNode* podRezNode = [CC3PODResourceNode nodeWithName: @"FirstModel"];
podRezNode.resource = [IntroducingPODResource resourceFromFile: @"FirstModel.pod"];
podRezNode.shouldCullBackFaces = NO;
podRezNode.location = cc3v(0.0, -10.0, 0.2);
podRezNode.isTouchEnabled = YES;
[self addChild: podRezNode];
[NSThread detachNewThreadSelector:@selector(loadScenesInThread) toTarget:self
withObject:nil];
}
// Crashing if i add the below function in separate thread or background thread
-(void) loadScenesInThread
{
CC3PODResourceNode* podRezNode = [CC3PODResourceNode nodeWithName: @"SecondModel"];
podRezNode.resource = [IntroducingPODResource resourceFromFile: @"SecondModel.pod"];
podRezNode.shouldCullBackFaces = NO;
podRezNode.location = cc3v(0.0, -10.0, -5.0);
podRezNode.isTouchEnabled = YES;
[self addChild: podRezNode];
podRezNode = [CC3PODResourceNode nodeWithName: @"ThirdModel"];
podRezNode.resource = [IntroducingPODResource resourceFromFile: @"ThirdModel.pod"];
podRezNode.shouldCullBackFaces = NO;
podRezNode.location = cc3v(0.0, -10.0, -5.0);
podRezNode.isTouchEnabled = YES;
[self addChild: podRezNode];
// .. do more
}
Может ли кто-нибудь вести меня, как бы я справился с такой ситуацией?
Не могли бы вы указать мне, где я могу увидеть образец для метода «асинхронный»? – Getsy
проверить CCTextureCache в api ref. Не знаю, предлагает ли cocos3d такие методы. – LearnCocos2D