gpt4 book ai didi

swift - GameViewController 和 SKScenes 的区别

转载 作者:搜寻专家 更新时间:2023-10-30 22:05:51 25 4
gpt4 key购买 nike

我一直在使用 SpriteKit 和 Swift 开发游戏,但我似乎无法确定 GameViewController 和我的任何一个 SKScene 之间的真正区别秒。我试图理解这些差异,因为我想在我的游戏中实现 GameCenter 或本地排行榜,但在我找到的所有教程中(比如这个:Game Center Leaderboards!(Xcode 中的 Swift 2))它们具有所有逻辑GameViewController 因为他们正在使用单 View 应用程序。我在阅读文档时无法理解这种关系,所以任何帮助都会很棒。最终,我希望能够在我的场景之一(例如 GameOverScene)中显示 GameCenter 数据并向 GameCenter 推送数据。感谢您的帮助!

最佳答案

这里有一些有用的信息:

SK 中每一帧发生的情况图:

enter image description here


所以你看,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):

https://developer.apple.com/library/ios/documentation/SpriteKit/Reference/SKView/index.html#//apple_ref/occ/cl/SKView


我们在 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


那么所有这些与 iOS 应用程序和 SpriteKit 有什么关系呢?好吧,它们都被捣碎了:

iOS 应用剖析:

anatomy

基本上,从右到左,您有 Window,它是(如果错误请纠正我)AppDelegate,然后是 ViewController,然后是您的 View,其中包含所有很酷的东西( Storyboard位于 View 内部) ,就像 SKScenes 位于 View 内部一样......标签、节点或按钮都位于它们各自的类中(( View )))

都是一大块继承的三明治。


查看 Apple 网站了解更多信息。

https://developer.apple.com/library/safari/documentation/UserExperience/Conceptual/MobileHIG/ContentViews.html#//apple_ref/doc/uid/TP40006556-CH13-SW1

https://developer.apple.com/spritekit/

https://developer.apple.com/library/ios/documentation/SpriteKit/Reference/SpriteKitFramework_Ref/

https://developer.apple.com/library/safari/documentation/UserExperience/Conceptual/MobileHIG/Anatomy.html

基本上,一切都是从类继承的类继承的类等等,等等......它会变得困惑。您还可以通过 CMD + 单击它们在 Xcode 中查看这些继承,这将跳转到源文件。

祝你在 SpriteKit 中的学习和冒险顺利:)

关于swift - GameViewController 和 SKScenes 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39151937/

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