2017-01-30 45 views
0

我在Xcode中有一個基於Objective-C的項目。我試圖在視圖控制器中添加一個SpriteKit場景作爲較小的視圖。 SpriteKit文件雖然很快。我添加了Floor1.sks並將其與Floor1.swift鏈接起來。Swift SKScene在Objective-C項目中顯示爲空白

現在我試圖將它加載到我的Objective-C ViewController.m文件中。在我的故事板中,我向SKView類提供了視圖,並且我認爲我正確地創建了一個橋接頭文件。我的代碼的時刻,將其插入是:

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; 

的觀點負載時,我成功地運行應用程序,但它是一個淺灰色的背景與節點數量是0,而FPS只是一個空的觀點。我做錯了什麼,它怎麼會不會加載我的正確看法?

+0

放一個斷點,看看是否正在初始化場景。順便說一句,什麼是Floor1(什麼是scene.rootNode)? – Whirlwind

+0

@Whirlwind Floor1是我的場景名稱。有Floor1.sks和Floor1.swift。在sks中,我將其自定義類設置爲swift文件。對於加載我的視圖的代碼(我的問題中唯一的代碼^^),它只是複製/粘貼到我的項目中。我似乎無法讓它工作,雖然 –

+0

爲什麼你從Floor1.sks加載GKScene呢?你的代碼有點混亂。例如,你的場景似乎有一個屬性爲rootNode,也是場景。你不能在場景中出現場景。我的意思是理論上你可以,但是作爲一個孩子添加到另一個場景中的場景將充當普通節點。 – Whirlwind

回答

0

我有同樣的問題。原諒我的英語,我使用谷歌翻譯。 當我創建一個新的跨平臺遊戲時,我決定將其視爲書面文件。即跨平臺。它沒有太多的其他場景初始化。這一切都爲我工作。用於僅在iOS 10工作,並且現在的iOS 9. 截圖我連接到它們

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