从 SKScene 呈现 UIViewController 显示黑屏
Posted
技术标签:
【中文标题】从 SKScene 呈现 UIViewController 显示黑屏【英文标题】:Presenting a UIViewController from SKScene shows black screen 【发布时间】:2017-01-27 09:31:39 【问题描述】:此代码旨在向用户显示UIViewController
“菜单”,而是以黑屏迎接他们。
let currentViewController:UIViewController=UIApplication.shared.keyWindow!.rootViewController!
let mymenu = menu()
currentViewController.present(mymenu, animated: true, completion: nil)
我正在从 SKScene
转换。
【问题讨论】:
【参考方案1】:要从另一个SKScene
呈现SKScene
,您应该这样做:
let nextScene = MainScene(size: self.scene!.size)
self.scene?.view?.presentScene(nextScene, transition: SKTransition.doorway(withDuration: 1))
您无需检索您的currentViewController
,因为您始终可以访问您的scene
的view
正如下面的 cmets 所解释的,有多种方法可以调用实现到游戏 viewController 的函数,其中一种可能是创建一个 delegate/protocol,如下代码所示:
GameScene 示例:
import SpriteKit
protocol GameViewControllerDelegate: class
func callMethod(inputProperty:String)
class GameScene: SKScene
weak var gameViewControllerDelegate:GameViewControllerDelegate?
override func didMove(to view: SKView)
gameViewControllerDelegate?.callMethod(inputProperty: "call game view controller method")
GameViewController 示例:
class GameViewController: UIViewController, GameViewControllerDelegate
override func viewDidLoad()
super.viewDidLoad()
if let view = self.view as! SKView?
// Load the SKScene from 'GameScene.sks'
if let scene = SKScene(fileNamed: "GameScene")
let gameScene = scene as! GameScene
gameScene.gameViewControllerDelegate = self
gameScene.scaleMode = .aspectFill
view.presentScene(gameScene)
view.ignoresSiblingOrder = true
view.showsFPS = true
view.showsNodeCount = true
func callMethod(inputProperty:String)
print("inputProperty is: ",inputProperty)
输出:
【讨论】:
但我正在转换到视图,而不是 SKScene。 您应该区分UIKit
元素和Sprite-kit
元素,尤其是在您使用游戏时。您也没有视图,但有一个包含 SKScene
的 SKView
,因此您无法“转换”到视图
对不起,我不明白。我想在我的 SKScene 中调用一个函数,它会向玩家展示一个 uiviewcontroller。
啊,对了,那是另一个故事 :-) ,无论如何你可以在你的场景中展示玩家视图或任何其他UIKit
视图self.scene?.view?.addSubview(<your UIKit element>)
好的,抱歉,谢谢,但是如何向玩家展示 uiviewcontroller?以上是关于从 SKScene 呈现 UIViewController 显示黑屏的主要内容,如果未能解决你的问题,请参考以下文章
从 SKScene 呈现 UIViewController 显示黑屏
如何在 SKScene 中呈现 UIViewController?
如何使用社交框架呈现来自 SKscene 的 UIViewController?