gpt4 book ai didi

ios - GameScene.sks 和 GameScene.swift

转载 作者:行者123 更新时间:2023-11-28 08:09:17 25 4
gpt4 key购买 nike

GameScene.sks 和 GameScene.swift 有问题。我试图为我的项目添加一个标题屏幕,但它从那里走下坡路。标题屏幕工作正常,但问题是当我编辑 Gameviewcontroller.swift 时。

This is how I want it to look, mind you I deleted the gamescene.sks at the start of the project but I realized you need sks file when you switch between scenes

This is how it ends up looking when I re-add the 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
}
}

这是在更改 View 后首先加载标题屏幕:

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 中调用...是吗?

这意味着只有您的第一个场景正在配置。

在你的标题场景中,无论你在哪里 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 所说,帧和场景大小不同,并且会影响一切的外观。

关于ios - GameScene.sks 和 GameScene.swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44123691/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com