Gamescene.swift和Gamescene.sks没有合作

时间:2017-02-16 09:16:45

标签: swift xcode sprite-kit

我的xCode项目出了问题。我有一个完整的gamecene.swift文件值得代码(600行)。但代码不会运行。当我在模拟器中运行我的游戏时,模拟器会显示标准的gamescene.sks颜色以及我的广告,但它没有显示我的任何代码。我已经检查过gamescene.sks中的自定义类是否正确。一切正常,期望gamecene.swift代码,它不会运行。

import UIKit
import SpriteKit
import GameplayKit
import GoogleMobileAds

class GameViewController: UIViewController {


@IBOutlet weak var GoogleBannerView: GADBannerView!
@IBOutlet weak var MainMenu: UIButton!
override func viewDidLoad() {
    super.viewDidLoad()

    GoogleBannerView.adUnitID = "ca-app-pub-13***46014918193/236762****"
    GoogleBannerView.rootViewController = self
    GoogleBannerView.load(GADRequest())


    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 = .resizeFill

            // Present the scene
            view.presentScene(scene)
        }

        view.ignoresSiblingOrder = true

        view.showsFPS = false
        view.showsNodeCount = false
        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
}

}

3 个答案:

答案 0 :(得分:14)

经过无数个小时的努力,我设法解决了这个问题。

    if let view = self.view as! SKView? {
        // Load the SKScene from 'GameScene.sks'
        if let scene = GameScene(fileNamed: "GameScene") {
            // Set the scale mode to scale to fit the window
            scene.scaleMode = .resizeFill

这是工作代码。问题是,而不是指定我想要带领的场景我已经写过了

if let scene = SKScene(fileNamed: "GameScene")

简单的解决方案是改变" SKScene"以我的SKScene名字命名。

if let scene = GameScene(Filenamed: "GameScene") 

希望这能帮助那些遇到此问题的无数其他人!

答案 1 :(得分:4)

在我的一些项目中,我遇到了类似的问题但并非全部。即使在工作的项目上,我复制了另一个项目的代码和场景文件,他们也会停止工作。我发现如果你的项目名称中有任何空格或特殊字符,除非你输入"模块"否则不会加载sks文件中的场景文件和项目。自定义类类型下面的名称。

对我而言,我的项目名为" Crag&猪"在任何sks文件注册之前我必须输入" Crag_Pig"在"模块"对于sks文件中的所有项目。

有趣的是,在没有空格或特殊字符的任何项目中,我没有必要为模块输入任何东西

答案 2 :(得分:0)

感谢。即使Xcode for SpriteKit Games中的默认模板也存在这个问题。那自从发布swift 4 + iOS 11以来。 我一直认为这是我,但从来没有花时间找到原因。直到现在出于好奇。我改变了你写的/固定的线,瞧。

刚刚更改了行

参数fileNamed:中的大写字母
if let scene = GameScene(fileNamed: "GameScene")