加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

swift – GameViewController和SKScenes之间的区别

发布时间:2020-12-14 05:21:41 所属栏目:百科 来源:网络整理
导读:我一直在使用SpriteKit和 Swift开发游戏,但我似乎无法确定GameViewController和我的任何一个SKScenes之间的真正差异.我正在尝试理解这些差异,因为我想在我的游戏中实现GameCenter或本地排行榜,但在我找到的所有教程中(就像这一个:游戏中心排行榜!(Xcode中
我一直在使用SpriteKit和 Swift开发游戏,但我似乎无法确定GameViewController和我的任何一个SKScenes之间的真正差异.我正在尝试理解这些差异,因为我想在我的游戏中实现GameCenter或本地排行榜,但在我找到的所有教程中(就像这一个:游戏中心排行榜!(Xcode中的Swift 2))他们拥有所有的逻辑GameViewController因为他们正在使用单一视图应用程序.当我阅读文档时,我无法理解这种关系,所以任何帮助都会很棒.最终,我希望能够在我的一个场景(如GameOverScene)中显示和推送来自GameCenter的数据.谢谢你的帮助!
以下是一些很好的信息:

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

所以你看,SKScene是一个包含Nodes和Actions等所有有趣内容的类,并且是一切(对你很重要)发生的地方.您可以通过编辑器生成这些场景,但是您可能需要创建一个新的.swift文件(因为每个场景都有自己的逻辑).

编辑器只是初始化一堆东西的“捷径”,老实说,你可以用很少的代码制作完整的游戏(但你很快发现你想要更多)

因此,在此代码中,您声明GameScene或PauseScreen(它们基本上只是类声明,继承自SKScene),您很快就会发现这一行谈论ISNT场景:

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):

07001

我们在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中声明,基本上就是这样:
class GameViewController:UIViewController

那么所有这些与iOS应用和SpriteKit有什么关系呢?好吧,他们都被捣碎在彼此之上:

IOS app解剖:

基本上,从右到左,你有一个窗口,它是(如果错误的话,我是错误的)AppDelegate,然后是ViewController,然后是你的View,里面有很多很酷的东西(故事板位于View里面,就像SKScenes位于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中看到这些遗产,这会将你跳转到源文件.

Goodluck与您在SpriteKit的学习和冒险:)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读