如何在 iOS 中从 UIView 转移到 SKScene

Posted

技术标签:

【中文标题】如何在 iOS 中从 UIView 转移到 SKScene【英文标题】:How transfer from UIView to SKScene in iOS 【发布时间】:2016-01-20 19:22:14 【问题描述】:

我想在 Apple ios 平台上使用 SpriteKit 开发游戏。我的游戏有一个包含标签、按钮、表格视图等的设置页面和一个游戏页面。在我的测试中,第一页是设置和当玩家按下“开始”时,游戏将开始。我不知道如何转移到游戏场景,也不知道我的问题在哪里,可能是因为我是 SpriteKit 的新手。 我的设置页面是情节提要中的起始页面,默认情况下它连接到 GameViewController,当我按下“开始”按钮时,最后一行出现错误,程序将停止。我想在新视图中加载我的游戏场景,但我有问题。 这是我的代码:

-(IBAction)btn_startGame:(id)sender

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

    SKScene* obj_gameScene = [MyScene sceneWithSize:skView.bounds.size];

    obj_gameScene.scaleMode = SKSceneScaleModeAspectFill;

    SKTransition *transition = [SKTransition flipVerticalWithDuration:0.5];
    [skView presentScene:obj_gameScene];


这是错误:

2016-01-21 06:06:40.201 test_myGame[605:5321] -[UIView presentScene:]: 无法识别的选择器发送到实例 0x7fd809fcf570 2016-01-21 06:06:40.207 test_myGame[605:5321] *** 由于未捕获而终止应用程序 异常'NSInvalidArgumentException',原因:'-[UIView presentScene:]: 无法识别的选择器发送到实例 0x7fd809fcf570'

【问题讨论】:

可以添加错误信息吗? 这是错误:2016-01-21 06:06:40.201 test_myGame[605:5321] -[UIView presentScene:]: unrecognized selector sent to instance 0x7fd809fcf570 2016-01-21 06:06 :40.207 test_myGame[605:5321] *** 由于未捕获的异常 'NSInvalidArgumentException' 导致应用程序终止,原因:'-[UIView presentScene:]: unrecognized selector sent to instance 0x7fd809fcf570' 【参考方案1】:

您必须确保 GameController 的视图是 SKView 而不是 UIView。

您可以查看情节提要:

选择 ViewController 的 View(左侧)并检查类型(右侧)。

在我的示例中,我创建了一个继承自 SKView 的自定义类 GameMainView。

【讨论】:

谢谢斯特凡,就是这样!

以上是关于如何在 iOS 中从 UIView 转移到 SKScene的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS 中从 NIB 加载 NIB

如何使用 segue 从 UIView 导航到 UIView 控制器?

如何在自定义 UIView 中从 ViewController 传递数据

如何在ios的UIView中找到遮罩的位置和大小

子类化使用 SpriteKit .sks 场景文件创建的 SKNode

如何转移UIView并使用Swift以编程方式添加新的UIView?