场景在Objective-C项目中显示为空白
我在Xcode中有一个基于Objective-C的项目。我正在尝试将SpriteKit场景添加为视图控制器中的较小视图。SpriteKit文件是swift格式的。我添加了Floor1.sks并将其与Floor1.swift链接 现在我尝试将其加载到Objective-C ViewController.m文件中。在我的故事板中,我创建了SKView类的视图,并且我认为我正确地创建了一个桥接头文件。我现在插入它的代码是:场景在Objective-C项目中显示为空白,objective-c,swift,xcode,sprite-kit,Objective C,Swift,Xcode,Sprite Kit,我在Xcode中有一个基于Objective-C的项目。我正在尝试将SpriteKit场景添加为视图控制器中的较小视图。SpriteKit文件是swift格式的。我添加了Floor1.sks并将其与Floor1.swift链接 现在我尝试将其加载到Objective-C ViewController.m文件中。在我的故事板中,我创建了SKView类的视图,并且我认为我正确地创建了一个桥接头文件。我现在插入它的代码是: GKScene *scene = [GKScene sceneWithFile
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。我做错了什么,为什么它不能加载我正确的视图?我也有同样的问题。原谅我的英语,我用谷歌翻译。 当我创建一个新的跨平台游戏时,我决定将其视为书面文件。即跨平台。它没有太多其他场景初始化。这一切都对我有用。以前只在iOS 10上工作,现在是iOS 9。 我附上的截图 [gamesecene.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;
}
[游戏场景.h][3]
#import <SpriteKit/SpriteKit.h>
@interface GameScene : SKScene
+ (GameScene *)newGameScene;
@end
#导入
@界面游戏场景:SKScene
+(游戏场景*)新游戏场景;
@结束
设置断点,查看场景是否正在初始化。顺便问一下,什么是Floor1(什么是scene.rootNode)?@Whirlwind Floor1是我的场景名称。有Floor1.sks和Floor1.swift。在sks中,我将其自定义类设置为swift文件。对于加载我的视图的代码(我问题中唯一的代码^^),它只是复制/粘贴到我的项目中。我似乎无法让它工作,但为什么你要从地板上加载GK场景1.sks?你的代码有点混乱。例如,您的场景似乎有一个属性rootNode,它也是场景。场景中不能有场景。我的意思是理论上可以,但作为子场景添加到另一个场景中的场景将充当普通节点。@Whirlwind我尝试加载sks,因为我认为这就是视图。在侧栏上的sks检查器中,我将自定义类设置为swift对应类。他们现在应该联系起来了,对吗?我应该做什么来加载我的视图?我不熟悉这一点:/
#import <SpriteKit/SpriteKit.h>
@interface GameScene : SKScene
+ (GameScene *)newGameScene;
@end