【发布时间】:2018-01-14 17:32:07
【问题描述】:
我的游戏中有三个场景,第一个是红色的,第二个是黄色的,第三个是蓝色的,所以如果用户触摸红色场景呈现黄色场景,如果用户触摸黄色场景呈现蓝色场景并且蓝色场景让你回到红色场景,在真实游戏中 MenuScene , WaitingScene 和 PlayScene ,
如果我在红色场景中触摸黄色场景中的每个方法被调用但红色节点仍然可见,如果我再次触摸蓝色场景中的方法并调用黄色节点,基本上每次都会出现在下一个场景中观点还是迟到了一步。
红色场景和扩展:
import SpriteKit
import GameplayKit
class RedScene : SKScene {
override func sceneDidLoad() {
print("red")
let red = SKSpriteNode(color: .red, size: CGSize(width: self.frame.size.width, height: self.frame.size.height))
red.position = CGPoint(x: 0, y: 0)
self.addChild(red)
}
override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
present(Scene: "YellowScene")
}
}
extension SKScene{
func present(Scene scene : String){
if let scene = SKScene(fileNamed: scene){
scene.scaleMode = .aspectFill
self.view?.presentScene(scene)
}
}
}`
黄色场景:
import SpriteKit
class YellowScene : SKScene{
override func sceneDidLoad() {
print("yellow")
let yellow = SKSpriteNode(color: .yellow, size: CGSize(width: self.frame.size.width, height: self.frame.size.height))
yellow.position = CGPoint(x: 0, y: 0)
self.addChild(yellow)
}
override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
present(Scene: "BlueScene")
}
}
蓝色场景:
import SpriteKit
class BlueScene : SKScene{
override func sceneDidLoad() {
print("blue")
let blue = SKSpriteNode(color: .blue, size: CGSize(width: self.frame.size.width, height: self.frame.size.height))
blue.position = CGPoint(x: 0, y: 0)
self.addChild(blue)
}
override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
present(Scene: "RedScene")
}
}
图片:现在我应该在蓝色场景中,但黄色节点仍然在这里!!
顺便说一句:当我旋转模拟器或单击主页按钮,然后返回游戏 bleu 节点时弹出。
【问题讨论】:
-
您是否对所有这些场景使用相同的 ViewController 和视图?
-
@Aleksandr 我认为这是模拟器中的错误,因为当我在真实设备上运行游戏时它运行良好。
标签: ios swift sprite-kit