Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift GameSecene.sks文件未被使用_Swift_Sprite Kit - Fatal编程技术网

Swift GameSecene.sks文件未被使用

Swift GameSecene.sks文件未被使用,swift,sprite-kit,Swift,Sprite Kit,我正在学习Swift,我从SpriteKit开始。 我正在尝试创建一个简单的游戏,有一个关于SpriteKit如何工作的问题。我用一个开始按钮创建了一个新场景(MenuScene),我编辑了GameViewController.swift以首先运行MenuScene。 在MenuScene上,我将移动到GameSecene,它链接到GameSecene.sks。当我运行应用程序时,它“忽略”GameSecene.sks,并且不显示任何内容。 当我编辑GameViewController.swif

我正在学习Swift,我从SpriteKit开始。 我正在尝试创建一个简单的游戏,有一个关于SpriteKit如何工作的问题。我用一个开始按钮创建了一个新场景(MenuScene),我编辑了
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好的,添加了