- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我一直在使用 SpriteKit 和 Swift 开发游戏,但我似乎无法确定 GameViewController
和我的任何一个 SKScene
之间的真正区别秒。我试图理解这些差异,因为我想在我的游戏中实现 GameCenter 或本地排行榜,但在我找到的所有教程中(比如这个:Game Center Leaderboards!(Xcode 中的 Swift 2))它们具有所有逻辑GameViewController
因为他们正在使用单 View 应用程序。我在阅读文档时无法理解这种关系,所以任何帮助都会很棒。最终,我希望能够在我的场景之一(例如 GameOverScene
)中显示 GameCenter 数据并向 GameCenter 推送数据。感谢您的帮助!
最佳答案
这里有一些有用的信息:
所以你看,SKScene 是一个包含所有有趣的东西(如节点和 Action )的类,并且是一切(对你来说很重要)发生的地方。您可以通过编辑器生成这些场景,但是您可能需要制作一个新的 .swift 文件来配合它(因为每个场景都可以有自己的逻辑)。
编辑器只是初始化一堆东西的“捷径”,老实说,您可以用很少的代码制作完整的游戏(但您很快就会发现您想要更多)
所以在这段代码中,您声明 GameScene 或 PauseScreen(它们基本上只是类声明,继承自 SKScene),您很快就会发现这行代码谈论的不是场景:
override func didMoveToView(view: SKView)
.. it's calling a SKView... what is that, and where did it come from?(Read about SKView here, and look at its inheritance):
我们在 GameViewController
文件中找到这个 SKView 声明(这只是一个类),注意它与常规 iOS 应用程序大部分相同,因为它继承了 UIViewController:
override func viewDidLoad() {
super.viewDidLoad()
if let scene = GameScene(fileNamed:"GameScene") {
// Configure the view.
let skView = self.view as! SKView
skView.showsFPS = true
skView.showsNodeCount = true
/* Sprite Kit applies additional optimizations to improve rendering performance */
skView.ignoresSiblingOrder = true
/* Set the scale mode to scale to fit the window */
scene.scaleMode = .AspectFill
skView.presentScene(scene)
}
同样,该方法在 GameViewController.swift 中声明,基本上就是这样:类 GameViewController: UIViewController
基本上,从右到左,您有 Window,它是(如果错误请纠正我)AppDelegate,然后是 ViewController,然后是您的 View,其中包含所有很酷的东西( Storyboard位于 View 内部) ,就像 SKScenes 位于 View 内部一样......标签、节点或按钮都位于它们各自的类中(( View )))
都是一大块继承的三明治。
查看 Apple 网站了解更多信息。
https://developer.apple.com/spritekit/
https://developer.apple.com/library/ios/documentation/SpriteKit/Reference/SpriteKitFramework_Ref/
基本上,一切都是从类继承的类继承的类等等,等等......它会变得困惑。您还可以通过 CMD + 单击它们在 Xcode 中查看这些继承,这将跳转到源文件。
祝你在 SpriteKit 中的学习和冒险顺利:)
关于swift - GameViewController 和 SKScenes 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39151937/
我创建了分享按钮,用于在 Facebook 、推特等平台上分享我的分数。在 GameViewController 中创建的按钮以及我在游戏场景中创建的分数和高分。 我确实分享了分数,但我不知道如何将我
运行在spriteKit下的App。几天前,一旦 gameViewController 被加载,gameScene 就会被加载。今天我把它的加载 Action 改成只有在点击开始按钮时才加载gameS
想在游戏开始前预加载 textureAtlases,所以我决定将场景启动代码放入完成处理程序中,但由于某些原因应用程序崩溃了。这是我的代码: import UIKit import SpriteKit
我已将横幅 View 集成到应用程序内的场景中,但无法将插页式广告集成到另一个场景中。这是我的代码:导入 SpriteKit导入游戏包导入 GoogleMobileAds class GameOve
我创建了一个 HomeScene.sks 和一个 HomeScene.swift。在 GameViewController 中,我已将默认的“GameScene”更改为“HomeScene”,如下所示
一旦我的游戏完成,我将在我的 GameViewController 中运行 self.performSegueWithIdentifier("goToGameOver", sender: nil),它
我有两个场景,GameScene 和 PlayScene。我可以展示我的 GameScene,但我无法展示 PlayScene,我使用的是相同的代码和正确的文件名。我正在使用 UIButton 来调用
我正在使用 SpriteKit 框架在 Swift 中开发一款游戏。在此应用程序中,我有 GameScene.sks,其中显示了我的 UI。在该 .sks 文件中,底部菜单有一个 SKReferenc
下面复制相关代码,我也在Github上放了一个简单的测试项目来演示这种情况: https://github.com/prinomen/viewPresentSceneTest 我有一个 GameVie
我成功测试了应用内购买后广告的移除。我只需要在他们完成付款并完成交易后,当前 GameScene 上的横幅广告仍然存在。为了删除它们,我必须重新启动该应用程序。我的 GameViewControlle
所以我在我的 swift 项目中创建了几个不同的 SKScenes 并且我在几个教程中看到你不必将 gameScene.swift 作为你的第一个场景启动,但是我找不到一个教程解释如何 import
我一直在使用 SpriteKit 和 Swift 开发游戏,但我似乎无法确定 GameViewController 和我的任何一个 SKScene 之间的真正区别秒。我试图理解这些差异,因为我想在我的
当我尝试在 Swift 中为我的游戏添加不同的场景时,我遇到了 unarchiveFromFile 方法。这种方法的问题在于它只适用于 GameScene 类。如果你从 extension SKNod
我在 GameViewController 类中创建了一个 UIScrollView,其中 subview 是场景。当用户进入特定场景并按下特定按钮时,ScrollView 必须停止滚动。 我怎样才能
我在 GameViewController 中制作了游戏菜单。然后,当按下 Go 按钮时,我尝试移动到 GameScene。我使用默认代码来呈现 GameScene 文件。 if let scene
我想在 SceneKit 应用程序中使用 Core Data,但是在创建项目时,选择"file"、“新建”-> 后没有选项可以选中“使用核心数据” 项目->游戏;如果我在创建项目后尝试将 Core D
我已将 admob 奖励视频添加到我的应用中。 admob 一切正常。但是,我无法在观看奖励视频后更新直播标签。如果我去另一个场景然后回来,它会更新并显示新值。 //GameViewControlle
在 GameViewController 中,我想从我的一个 SKScenes 访问方法。它的类称为 PlayScene。 我一直在努力解决这个问题,但还没有成功。我正在尝试像 let gameSce
这是我的相关代码: 来 self 的 GameScene 类: func resetCircleAndScore(scale: CGFloat) { circleIsStationar
我在 Storyboard中创建了一个按钮,它位于我的游戏屏幕上。它在 GameViewController() 中有一个 IB Action ,如下所示: @IBAction func but
我是一名优秀的程序员,十分优秀!