xcode – 如何在我的应用程序上创建另一个屏幕
发布时间:2020-12-14 19:25:09 所属栏目:百科 来源:网络整理
导读:所以我想知道,默认的“游戏” Xcode配置.你会如何制作另一款SKScene?比如说我想要一个菜单??或什么? 基本上我将如何创建另一个标题为“title.swift”的文档,然后以编程方式来回切换它们?这样我可以从菜单到游戏场景而不会弄乱我的代码? 我无法在重新编码
所以我想知道,默认的“游戏”
Xcode配置.你会如何制作另一款SKScene?比如说我想要一个菜单??或什么?
基本上我将如何创建另一个标题为“title.swift”的文档,然后以编程方式来回切换它们?这样我可以从菜单到游戏场景而不会弄乱我的代码? 我无法在重新编码的代码中找到它实际上告诉swift显示用“游戏”配置预制的游戏场景. 我想我创建了一个新类并继承了SKScene. 解决方法
您可以通过继承SKScene或其创建的任何子类来创建新场景.您可以通过调用SKView方法presetScene(场景:SKScene)在场景之间切换.这是我在上一场比赛中实现它的方式:
//handles all scene transitions protocol SceneTransitionDelegate { //this passes the scene as a class (not object) func transitionToScene(sceneClass:Scene.Type) } //make sure all you scenes are a subclass of this (so they inherit sceneDelegate): class Scene: SKScene { //Scene inherits from SKScene var sceneDelegate:SceneTransitionDelegate! required override init(size: CGSize) { super.init(size: size) } required init?(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") } } class GameScene:Scene { //call this method within the scene to return to the main menu func gameOver() { sceneDelegate.transitionToScene(MainMenuScene.self) } } class MainMenuScene: Scene { //call this method to transition to a game scene func newGame() { sceneDelegate.transitionToScene(GameScene.self) } } //the VC that presents your scenes class GameViewController: UIViewController,SceneTransitionDelegate { var skView:SKView { return view as! SKView } override func viewDidLoad() { super.viewDidLoad() //load first scene (e.g. MainMenu) transitionToScene(MainMenuScene.self) } //SceneTransitionDelegate method func transitionToScene(sceneClass:Scene.Type) { let scene = sceneClass(size: skView.bounds.size) scene.scaleMode = .AspectFill scene.sceneDelegate = self skView.presentScene(scene) } } 您可以通过向SceneTransitionDelegate添加自定义过渡的方法来改进这一点. protocol SceneTransitionDelegate { func transitionToScene(sceneClass:Scene.Type) func transitionToScene(sceneClass:Scene.Type,transitionAnimation:SKTransition) } 并将新方法添加到视图控制器,如下所示: func transitionToScene(sceneClass: Scene.Type,transitionAnimation: SKTransition) { let scene = sceneClass(size: skView.bounds.size) scene.scaleMode = .AspectFill scene.sceneDelegate = self skView.presentScene(scene,transition: transitionAnimation) } 并在这样的场景中调用它: func gameOverAnimated() { let transition = SKTransition.crossFadeWithDuration(0.5) sceneDelegate.transitionToScene(MainMenuScene.self,transitionAnimation: transition) } 我做了一个快速演示xcode项目here. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |