簡體   English   中英

GameScene.sks和GameScene.swift

[英]GameScene.sks and GameScene.swift

遇到GameScene.sks和GameScene.swift的問題。 我試圖為我的項目添加標題屏幕,然后從那里開始下坡。 標題屏幕工作正常,但問題是當我編輯Gameviewcontroller.swift時。

這就是我希望它看起來的樣子,請注意,我在項目開始時刪除了gamescene.sks,但是當你在場景之間切換時我意識到你需要sks文件

當我重新添加gamescene.sks時,這就是它最終的結果

在添加TitleScreen之前,這是GameViewController.Swift到工作文件

import UIKit
import SpriteKit
import GameplayKit

class GameViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        let scene = GameScene(size: view.bounds.size)
        let skView = view as! SKView
        skView.showsFPS = true
        skView.showsNodeCount = true
        skView.ignoresSiblingOrder = true
        scene.scaleMode = .resizeFill
        skView.presentScene(scene)
    }

    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
    }
}

這是在更改視圖以首先加載標題屏幕之后:

import UIKit
import SpriteKit
import GameplayKit

class GameViewController: UIViewController {

    override func viewDidLoad() {

        super.viewDidLoad()

         if let scene = titleScreen(fileNamed: "titleScreen") {

                //Configure view 
                let skView = self.view as! SKView
                skView.showsFPS = true
                skView.showsNodeCount = true
                skView.ignoresSiblingOrder = true
                // Set the scale mode to scale to fit the window
               // scene.scaleMode = .aspectFill

                scene.size = self.view.frame.size
                // Present the scene
                skView.presentScene(scene)


            }


    }

    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
    }
}

我想可能是你沒有配置你的GameScene實例......

scene.scaleMode = .resizeFill只在你的gameviewcontroller中調用...是的?

這意味着只有你的FIRST場景得到配置。

在你的標題場景中,無論你在presentScene ,你都需要配置下一個場景......

func configureScene(_ scene: SKScene) -> SKScene {
  scene.scaleMode = .resizeFill
  scene.anchorPoint = CGPoint(x: 0.5, y: 0.5) // Or whatever you want..
  scene.size = UIWindow().frame.size // Or whatever size you want.
  return scene
}

實行:

// Where self is an SKScene...
self.presentScene(configureScene(desiredScene))

同樣如WW所說,幀和場景大小不同,會影響一切的外觀。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM