gpt4 book ai didi

swift - spritekit 场景转换不正确

转载 作者:搜寻专家 更新时间:2023-11-01 07:08:03 25 4
gpt4 key购买 nike

我在用 swift 4 编写的 spritekit 应用程序的场景转换中遇到了问题

我有一个声明 EndScene 类的 gameover.swift 文件:

import Foundation
import SpriteKit

class EndScene: SKScene, SKPhysicsContactDelegate {


var RestartButton : UIButton!
var HighScore : Int!
var HighScoreLabel : UILabel!
var GameOverLabel : UILabel!
override func didMove(to view: SKView) {

self.scene?.backgroundColor = SKColor.white

RestartButton = UIButton(frame: CGRect(x:0, y:0, width: view.frame.size.width/3
, height: 30))
RestartButton.titleLabel?.adjustsFontSizeToFitWidth = true
RestartButton.center = CGPoint(x: view.frame.size.width/2 , y: view.frame.size.height/1.5)
RestartButton.setTitle("restart", for: UIControlState.normal)
RestartButton.showsTouchWhenHighlighted = true
RestartButton.setTitleColor(SKColor.black, for: UIControlState.normal)
RestartButton.addTarget(self, action: #selector(EndScene.Restart), for: UIControlEvents.touchUpInside)
self.view?.addSubview(RestartButton)




GameOverLabel = UILabel (frame: CGRect(x:0, y:0, width: view.frame.size.width/3.8, height: 30))
GameOverLabel.center = CGPoint(x: view.frame.size.width/2 , y: view.frame.size.height/10)
GameOverLabel.textColor = SKColor.red
GameOverLabel.text = "Game Over"
self.view?.addSubview(GameOverLabel)

}

func Restart(){
RestartButton.removeFromSuperview()
GameOverLabel.removeFromSuperview()
self.removeAllChildren()
self.view?.presentScene(GameScene(), transition: SKTransition.reveal(with: .up, duration: 0.3))


}

}

GameScene 是在 GameScene.swift 文件中声明的类。它包含描述游戏过程的类声明。

问题是:

当游戏从 GameScene 启动时它工作正常(所有对象都被淹没并且物理工作)但是当我从 EndScene 重新启动游戏时它工作不正确(1 个对象不时被淹没但其他所有对象都没有淹没,即使背景颜色不会被淹没)。

一般可以搭配什么?

最佳答案

您不应该只是通过调用其无参数初始化程序来创建 GameScene。查看 GameScene 在生成的 GameViewController.swift 文件中是如何呈现的。您将看到它调用 (fileNamed:) 初始化程序。

所以改变这一行:

self.view?.presentScene(GameScene(), transition: SKTransition.reveal(with: .up, duration: 0.3))

self.view?.presentScene(GameScene(fileNamed: "GameScene"), transition: SKTransition.reveal(with: .up, duration: 0.3))

关于swift - spritekit 场景转换不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46887486/

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