J'essaie de charger plusieurs gros modèles dans le code et d'afficher les scènes. En règle générale, le chargement et l'affichage de la scène à l'écran prennent beaucoup de temps car il faut extraire beaucoup de ressources d'un modèle de pod. Donc, j'ai pensé à peupler la première scène du fil principal et les autres restants dans un fil séparé. Mais, il s'écrase quand je déplace mon code de pièce dans un fil séparé. Voici mon exemple de code:Cocos3d: Blocage lors du chargement de la scène dans un fil séparé ou un fil d'arrière-plan:
-(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
}
Quelqu'un pourrait me guider comment pourrais-je gérer une telle situation?
Pouvez-vous me signaler où je peux voir l'échantillon pour la méthode "async"? – Getsy
vérifier CCTextureCache dans l'API réf. Aucune idée si cocos3d offre de telles méthodes. – LearnCocos2D