2017-01-30 2 views
0

Ich habe ein Objective-C-basiertes Projekt in Xcode. Ich versuche, eine SpriteKit-Szene als eine kleinere Ansicht in einem View-Controller hinzuzufügen. Die SpriteKit-Dateien sind jedoch schnell. Ich habe Floor1.sks hinzugefügt und mit Floor1.swift verknüpft.Swift SKScene wird im Objective-C-Projekt als leer angezeigt

Jetzt versuche ich es in meine Objective-C ViewController.m Datei zu laden. In meinem Storyboard machte ich den Blick auf die Klasse SKView, und ich glaube, ich habe eine Bridging-Header-Datei erstellt. Mein Code es zur Zeit einzufügen ist:

GKScene *scene = [GKScene sceneWithFileNamed:@"Floor1"]; 
Floor1 *sceneNode = (Floor1 *)scene.rootNode; 
sceneNode.scaleMode = SKSceneScaleModeAspectFit; 

SKView *skView = (SKView *)_skView; 

[skView presentScene:sceneNode]; 

skView.showsFPS = YES; 
skView.showsNodeCount = YES; 

Die Ansicht Lasten, wenn ich die App erfolgreich ausgeführt werden, aber es ist nur eine leere Ansicht mit einem hellgrauen Hintergrund mit der Knotenzahl, die gleich 0 ist, und die FPS. Was mache ich falsch, wie kommt es, dass es meine Sichtweise nicht belastet?

+0

Setzen Sie einen Haltepunkt und prüfen Sie, ob die Szene initialisiert wird. Übrigens, was ist das Floor1 (was ist scene.rootNode)? – Whirlwind

+0

@Whirlwind Floor1 ist der Name meiner Szene. Es gibt Floor1.sks und Floor1.swift. In den Sks habe ich die Custom Class auf die swift-Datei eingestellt. Und damit der Code meine Ansicht lädt (der einzige Code in meiner Frage ^^), wird er einfach in mein Projekt kopiert/eingefügt. Ich kann es anscheinend nicht zum Laufen bringen, aber –

+0

Warum lädst du dann GKScene von Floor1.sks? Ihr Code ist ein wenig verwirrend. Zum Beispiel scheint es, dass Ihre Szene eine Eigenschaft rootNode hat, die auch Szene ist. Du kannst keine Szene in einer Szene haben. Ich meine theoretisch können Sie, aber Szene, die als Kind zu einer anderen Szene hinzugefügt wird, wird als gewöhnlicher Knoten fungieren. – Whirlwind

Antwort

0

Ich hatte das gleiche Problem. Verzeihen Sie mein Englisch, ich benutze Google Übersetzer. Ich habe beschlossen, es als geschriebene Dateien anzusehen, wenn ich ein neues plattformübergreifendes Spiel erstelle. Nämlich plattformübergreifend. Es hat nicht viel andere Szeneninitialisierung. Und alles hat für mich funktioniert. Wird nur auf 10 iOS zu arbeiten, und jetzt iOS 9. Screenshots ich an ihnen

GameViewController.m

#import "GameViewController.h" 
#import "GameScene.h" 

@implementation GameViewController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    GameScene *scene = [GameScene newGameScene]; 

    // Present the scene 
    SKView *skView = (SKView *)self.view; 
    [skView presentScene:scene]; 

    skView.ignoresSiblingOrder = YES; 
    skView.showsFPS = YES; 
    skView.showsNodeCount = YES; 
} 

[GameScene.m] [2]

#import "GameScene.h" 

@implementation GameScene { 
    SKShapeNode *_spinnyNode; 
    SKLabelNode *_label; 
} 

+ (GameScene *)newGameScene { 
    // Load 'GameScene.sks' as an SKScene. 
    GameScene *scene = (GameScene *)[SKScene nodeWithFileNamed:@"GameScene"]; 
    if (!scene) { 
     NSLog(@"Failed to load GameScene.sks"); 
     abort(); 
    } 

    // Set the scale mode to scale to fit the window 
    scene.scaleMode = SKSceneScaleModeAspectFill; 

    return scene; 
} 

[GameScene.h ] [3]

#import <SpriteKit/SpriteKit.h> 

@interface GameScene : SKScene 

+ (GameScene *)newGameScene; 

@end 
Verwandte Themen