2016-03-27 32 views
2

Bir sorun yaşıyorum. Spritekit'te yeni bir sahne sunduğumda (objektifle c) Ekranda sadece düğüm ve fps ile gri bir renk gösterilir. Bu gibi olmamalıdır böyleceSpritekit gösterilemedi sahne görüntüleniyor

Ben .sks dosyasında sahneyi canlandırdı. Yeni sahneyi sunarken geçiş de çalışıyor, ancak sadece .sks dosyasında canlandırdığım görüntüleri ve arka planı göstermeyeceğim.

İşte nasıl yaptığımın kodu.

//In gameviewcontroller.m 

// Creating and configuring the scene. 
GameScene *Level1 = [GameScene nodeWithFileNamed:@"GameSceneLevel1"]; 
Level1.scaleMode = SKSceneScaleModeAspectFill; 



// GameScene.m inside touchesbegan 

SKTransition *reveal = [SKTransition doorwayWithDuration:4]; 


     GameScene *Level1 = [GameScene sceneWithSize:self.view.bounds.size]; 
     Level1.scaleMode = SKSceneScaleModeAspectFill; 
     [self.view presentScene:Level1 transition:reveal]; 
+0

Aynı sahneye geçiş yapmak istediğinizden emin misiniz? Şu anda GameScene'den -> GameScene'den gidiyorsunuz. – Whirlwind

+0

Hayır, sadece test içindi, farklı bir sahne için nasıl yapardınız :)? –

+0

'dan önce denedim. Cevabı iptal et (bir düzenleme yaptım) ... – Whirlwind

cevap

0

en başta .sks gelen dosyayı sahnesini yüklenmiş ve dediğin gibi orada bazı animasyonlar var. Daha sonra, (touchesBegan içinde) bir boyut sağlayarak bir sahne oluşturuyorsunuz (sceneWithSize statik yöntemini kullanarak). Böylece sahne arşivden yüklenmedi.

, sorunu çözmek sen GameViewController yılında, başlangıçta yaptığım gibi sahne yüklemek için.

DÜZENLEME:

iki .sks dosyaları oluşturmak için gereken iki sahneler arasında geçiş. Bunları şu şekilde adlandırabilirsiniz: MenuScene ve GameScene (bunu varsayılan olarak zaten var). Bu dosyaları oluşturduğunuzda, bir uzantı (.sks) değil, yalnızca dosya adı yazmanız gerektiğini unutmayın. Sonra ilgili .m ve .h dosyalarını oluşturmanız gerekir. Yani MenuScene.m ve MenuScene.h'u oluşturun. GameScene.m ve .h dosyaları varsayılan olarak var. SKScene'un bir alt sınıfı (mutlaka doğrudan bir alt sınıf değil) olmalıdır ().

Sonra görünümü denetleyicisi iç: in Daha sonra

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    SKView * skView = (SKView *)self.view; 

    GameScene *scene = [GameScene nodeWithFileNamed:@"GameScene"]; 
    scene.scaleMode = SKSceneScaleModeAspectFill; 
    scene.size = skView.bounds.size; 

    [skView presentScene:scene]; 
} 

senin GameScene Diyelim ki MenuScene geçiş istiyorsanız, böyle bir şey yapması gerektiğini touchesBegan yöntemi: Benzer

MenuScene *nextScene = [MenuScene nodeWithFileNamed:@"MenuScene"]; 
SKTransition *transition = [SKTransition fadeWithDuration:3]; 
[self.view presentScene:nextScene transition:transition]; 

, MenuScene'in touchesBegan'una geri dönmek için GameScene'a geçiş yapın:

GameScene *nextScene = [GameScene nodeWithFileNamed:@"GameScene"]; 
SKTransition *transition = [SKTransition fadeWithDuration:3]; 
[self.view presentScene:nextScene transition:transition]; 

Elbette her geçişten önce sahnedeki ölçek modunu eski sahnenin ölçek moduna uyacak şekilde ayarlayabilirsiniz.

Kodunuzdan, aynı sahneye geçiş yapmaya çalışıyorsunuz gibi görünüyor: GameScene ->GameScene. Bu kesinlikle mümkün, ama bunu istediğine emin misin?

Eğer öyleyse, sadece ben MenuScene en touchesBegan yöntemi için sağladığınız kodu kullanabilirsiniz.

+0

Tamam, ama bunu yaparken yapmaya çalıştığım zaman GameViewController içinde iç dokunuşları başladı sadece "hata" diyor "UIView için '@interface seçiciyi ilan eder' presentScene: geçiş: '" –

+0

Düzenleyecek sahneler arasında nasıl geçiş yapmanız gerektiğini göstermek için cevabım. – Whirlwind

+0

Cevabınız için teşekkürler! Bunu şimdi deneyeceğim. –