使用Xcode时,我遇到了烦人的问题,当我点击.SKS文件时Xcode总是崩溃。我在这里提出了问题,甚至在Apple开发者论坛上,以及在互联网上搜索解决方案......但它没有希望。
因为我正在制作一个包含许多场景的游戏,所以如果我不能使用SpriteKit编辑器以简单的方式与场景交互,我想知道如何通过编码他们的.swift文件来与我的场景进行交互。
所以问题是,例如,当我创建一个文件“EndScene.sks”时,如何创建一个“EndScene.swift”,它与我的.sks文件链接?
非常感谢!
答案 0 :(得分:5)
创建一个新的swift文件,并将其命名为.sks文件。假设您有一个名为MainMenu.sks
的.sks文件。您将创建一个名为MainMenu.swift
的快速文件。在该文件中,您需要创建一个继承自SKScene
的Main Menu类。
import SpriteKit
class MainMenu: SKScene {
}
在里面你可以放置所有代码。正如你所说,关键是将其链接到.sks文件。
当您去展示场景时,您将实例化该类并将其与.sks文件关联。
import UIKit
import SpriteKit
class GameViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
if let scene = MainMenu(fileNamed:"MainMenu") {
let skView = self.view as! SKView
// Some settings applied to the scene and view
// ... code ...
skView.presentScene(scene)
}
}
//... other code
}
注意第let scene = MainMenu(fileNamed:"MainMenu")
行。这就是您在MainMenu.swift.
中实例化您创建的类的地方所以,从技术上讲,MainMenu()
是.swift
文件,fileNamed: "MainMenu"
是.sks
文件。您可以在技术上将任何.sks
文件放入init调用中,它将呈现该场景。
想象一下,拥有迷宫跑者所有逻辑的游戏。您可以在名为MazeScene
的类中构建所有游戏逻辑,只需制作一堆.sks
个文件,每个文件都有不同的迷宫。那么您可以这样,MazeScene(fileNamed: "MazeOne")
或MazeScene(fileNamed: "MazeThree")
。
有关此文档的文档,SKScene继承自SKNode,因此您可以找到init(fileNamed:)
here的文档
这应该让你去。
答案 1 :(得分:1)
所以不是评论我不得不徘徊,因为StackOverflow不让我发表评论,在swift 3中有多少相同?当你在UIViewController中这样做时,你说
if let scene = MainMenu(fileNamed:"MainMenu") {
let skView = self.view as! SKView
// Some settings applied to the scene and view
// ... code ...
skView.presentScene(scene)
}
你是什么意思
// ... code ...
我们是否将我们放在SKScene类中的所有代码放在那里?我认为重点是要有一个单独的SKScene课程。当我尝试这样的SKScene课程时,我没有加载。感谢您的任何澄清和抱歉,我必须回答而不是评论。你需要50点声望才能发表评论我觉得很愚蠢。我没有看到任何一点。无论如何,谢谢!