我正在学习 SpriteKit 并开始了一个使用关卡编辑器的小项目。
但是,由于某些原因,GameScene.swift 和 GameScene.sks 似乎没有关联。下面是 .sks 文件设置的屏幕截图和 .swift 文件的 viewDidLoad 中的小打印语句。请让我知道我做错了什么。或者如果我遗漏了什么。
spritekit .sks 文件。
我的 View Controller 的 viewDidLoad 函数。
class GameViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let screenSize = CGSize(width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height)
GameController.gameController.setGameManager(gameViewManager: self);
if let view = self.view as! SKView? {
// Load the SKScene from 'GameScene.sks'
if let scene = SKScene(fileNamed: "GameScene") {
// Set the scale mode to scale to fit the window
scene.scaleMode = .aspectFill
// Present the scene
view.presentScene(scene)
}
}
}
最佳答案
我们有一个正常的 GameScene.swift
,它应该用 GameViewController
调用的 GameScene.sks
打印“hello”。您没有指定什么是 GameController
但这不是问题,因为我认为您可能只是失去了游戏的流程,所以我会尽力帮助您解决这个问题(别担心,
当您长时间专注于游戏的其余部分并且不记得开始流程时,就会发生这种情况。
在您的 Main.storyboard
中,您可能不会遇到这样的情况:
您的 GameViewController
是初始 View Controller 。
我的意思是,您应该检查谁在您的 Storyboard上调用了 GameViewController
,或者您的 AppDelegate.swift
(在 didFinishLaunchingWithOptions
中)是否停止了流程或调用其他调用 GameViewController
之前的 View 。
因此,检查谁是 IVC(初始 View Controller )并确保您的 GameViewController
从一开始就被调用或被其他使用断点的 viewController 调用,或者只是在你的viewDidLoad
:
print("∙ \(type(of: self))")
当您在库中添加或删除具有相同名称的文件时,可能会发生另一种情况。在这种情况下,请尝试删除 GameScene.swift
和 GameScene.sks
,清理并构建您的项目并重新添加这些文件(确保您的屏幕 GameScene.sks 具有正确的自定义类..)
检查您的编译源列表以控制您的GameScene.swift
希望对您有所帮助。
关于ios - Gamescene.sks 和 GameScene.swift 在我的项目中似乎没有关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40569950/