[英]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.