Swift GameSecene.sks文件未被使用
我正在学习Swift,我从SpriteKit开始。 我正在尝试创建一个简单的游戏,有一个关于SpriteKit如何工作的问题。我用一个开始按钮创建了一个新场景(MenuScene),我编辑了Swift GameSecene.sks文件未被使用,swift,sprite-kit,Swift,Sprite Kit,我正在学习Swift,我从SpriteKit开始。 我正在尝试创建一个简单的游戏,有一个关于SpriteKit如何工作的问题。我用一个开始按钮创建了一个新场景(MenuScene),我编辑了GameViewController.swift以首先运行MenuScene。 在MenuScene上,我将移动到GameSecene,它链接到GameSecene.sks。当我运行应用程序时,它“忽略”GameSecene.sks,并且不显示任何内容。 当我编辑GameViewController.swif
GameViewController.swift
以首先运行MenuScene
。
在MenuScene
上,我将移动到GameSecene
,它链接到GameSecene.sks
。当我运行应用程序时,它“忽略”GameSecene.sks,并且不显示任何内容。
当我编辑
GameViewController.swift
运行GameScene
时,首先我可以看到添加到GameScene的所有内容。为什么会这样?希望我足够清楚,提前谢谢 可能不是你想要的确切答案,但它会起作用(除非我误解了你的问题)。我通常倾向于从.swift文件加载场景,而不是从.sks文件(我根本不用)加载场景。一个简单的方法是:
func loadGameScene() {
let scene = GameScene(size: view.bounds.size)
scene.scaleMode = .resizeFill
let transitionType = SKTransition.flipHorizontal(withDuration: 1.0)
let skView1 = view as! SKView
skView1.ignoresSiblingOrder = true
skView1.presentScene(scene,transition: transitionType)
}
您可以将此函数放入GameViewController中,并在每次单击按钮时从GameViewController调用它。如果你真的想使用你的.sks文件,你可以编辑这个函数来使用你的.sks文件
如果您不知道如何从另一个SKScene类(MenuScene)调用该函数,请按照以下方式执行:
在场景中,创建变量viewController
,如下所示:
class MenuScene: SKScene{
var viewController: GameViewController!
这指向您的GameViewController。现在,在您的GameViewController中,在显示菜单项之后,添加:
scene.viewController=self
现在在您的MenuScene中,您只需调用
viewController.loadGameSecene()
即可切换场景可能不是您想要的确切答案,但它会起作用(除非我误解了您的问题)。我通常倾向于从.swift文件加载场景,而不是从.sks文件(我根本不用)加载场景。一个简单的方法是:
func loadGameScene() {
let scene = GameScene(size: view.bounds.size)
scene.scaleMode = .resizeFill
let transitionType = SKTransition.flipHorizontal(withDuration: 1.0)
let skView1 = view as! SKView
skView1.ignoresSiblingOrder = true
skView1.presentScene(scene,transition: transitionType)
}
您可以将此函数放入GameViewController中,并在每次单击按钮时从GameViewController调用它。如果你真的想使用你的.sks文件,你可以编辑这个函数来使用你的.sks文件
如果您不知道如何从另一个SKScene类(MenuScene)调用该函数,请按照以下方式执行:
在场景中,创建变量viewController
,如下所示:
class MenuScene: SKScene{
var viewController: GameViewController!
这指向您的GameViewController。现在,在您的GameViewController中,在显示菜单项之后,添加:
scene.viewController=self
现在,在您的MenuScene中,您只需调用
viewController.loadGameSecene()
即可切换场景我尝试了这一点,但在这段代码中,我没有确切地了解“视图”是什么,在这一行中,我遇到了一个问题(关于downcast)(让skView1=xxxxx)。谢谢@swiftnewbie您是否将其放入GameViewController.swift文件中?还要确保它在类的括号内,我应该在哪里调用这个函数?我现在从MenuScene转到GameSene,我可以从MenuScene调用它吗?@swiftnewbie我将把这部分添加到答案保留中on@swiftnewbie好的,这是addedI尝试过的,我没有得到代码中的“视图”,我在这行中遇到了一个问题(关于downcast)(让skView1=xxxxx)。谢谢@swiftnewbie您是否将其放入GameViewController.swift文件中?还要确保它在类的括号内,我应该在哪里调用这个函数?我现在从MenuScene转到GameSene,我可以从MenuScene调用它吗?@swiftnewbie我将把这部分添加到答案保留中on@swiftnewbie好的,添加了