无法使应用程序进入主菜单(Swift 4 SpriteKit)
Posted
技术标签:
【中文标题】无法使应用程序进入主菜单(Swift 4 SpriteKit)【英文标题】:Cannot make app go to main menu (Swift 4 SpriteKit) 【发布时间】:2018-06-13 23:00:30 【问题描述】:我正在尝试在我的游戏加载后立即将用户引导到一个主菜单文件(使用 Swift 4 SpriteKit 制作)。但是,当我尝试将用户重定向到此 .swift 文件(应在用户屏幕上显示标签的位置)时,除了节点和 FPS 计数器之外,屏幕只是空白。
这是我创建的 MainMenuScene.swift 文件中的代码:
import Foundation
import SpriteKit
class MainMenu: SKScene
override func didMove(to view: SKView)
print("In scene")
let myLabel = SKLabelNode(fontNamed: "The Bold Font")
myLabel.fontColor = SKColor.blue
myLabel.text = "My Label"
myLabel.fontSize = 50
myLabel.position = CGPoint(x: 0, y: 0)
myLabel.zPosition = 1
self.addChild(myLabel)
这是我在 GameViewController.swift 中的代码
import UIKit
import SpriteKit
import GameplayKit
class GameViewController: UIViewController
override func viewDidLoad()
super.viewDidLoad()
if let view = self.view as! SKView?
// Load the SKScene from 'GameScene.sks'
if let scene = SKScene(fileNamed: "MainMenuScene")
// Set the scale mode to scale to fit the window
scene.scaleMode = .aspectFill
// Present the scene
view.presentScene(scene)
view.ignoresSiblingOrder = true
view.showsFPS = true
view.showsNodeCount = true
view.showsPhysics = true
override var shouldAutorotate: Bool
return true
override var supportedInterfaceOrientations: UIInterfaceOrientationMask
if UIDevice.current.userInterfaceIdiom == .phone
return .allButUpsideDown
else
return .all
override func didReceiveMemoryWarning()
super.didReceiveMemoryWarning()
// Release any cached data, images, etc that aren't in use.
override var prefersStatusBarHidden: Bool
return true
我改了
if let scene = SKScene(fileNamed: "GameScene")
到
if let scene = SKScene(fileNamed: "MainMenuScene")
那行代码应该将用户重定向到 MainMenuScene.swift,但是当我运行程序时,屏幕只是空白。 有谁知道我做错了什么? 谢谢!
【问题讨论】:
使用 Interface Builder 仔细查看您的场景文件。 @ElTomato 我的 MainMenuScene 文件? 我看不出有什么问题... 你的类名是 MainMenu 并且调用 fileNamed 为 "MainMenuScene" 这是正确的吗?试试MainMenu(fileNamed: "MainMenuScene")
@RonMyschuk 更改了它,但它仍然不起作用?只是一个空白屏幕?
【参考方案1】:
尝试使用下面的代码
super.viewDidLoad()
还要确保您的菜单类名为“MainMenuScene”,并且您在 MainMenuScene.sks 将场景名称更改为相同
代码:
if let scene = GKScene(fileNamed: "MainMenuScene")
// Get the SKScene from the loaded GKScene
if let sceneNode = scene.rootNode as! MainMenuScene?
scene.scaleMode = .aspectFill
// Present the scene
if let view = self.view as! SKView?
view.presentScene(sceneNode)
view.ignoresSiblingOrder = true
//view.showsFPS = true
//view.showsNodeCount = true
【讨论】:
以上是关于无法使应用程序进入主菜单(Swift 4 SpriteKit)的主要内容,如果未能解决你的问题,请参考以下文章
使用 spritekit swift 在 swift 中为游戏创建主菜单
Swift - 使用 UITableViewController 创建子菜单
带有可折叠侧边栏菜单 Swift 的 UITapGestureRecognizer
Swift:使用 StoryBoards 和 UIViewControllers 在 GameScene 中满足条件后返回主菜单?