【问题标题】:How to subclass SKnode to create a scene with multiple independent 'lanes'?如何对 SKnode 进行子类化以创建具有多个独立“通道”的场景?
【发布时间】:2019-12-01 16:24:34
【问题描述】:

我正在建造a 2d game with four lanes,每条车道都应该有自己相同的坐标系和逻辑

继承 SKNode 并将其添加到 SKScene 的正确方法是什么?

车道间距和高度将适应屏幕尺寸

【问题讨论】:

    标签: swift xcode sprite-kit


    【解决方案1】:

    这不是一个简短的继续, 这完全取决于您的四个不同车道之间的差异程度。当我说方差时,我的意思是他们需要不同的存储属性吗?每条泳道有多少种独特的方法。无论哪种方式,都要创建一个从 SKNode 继承的基类车道,头脑风暴并考虑所有将在所有车道上通用的属性和方法,并将它们添加到此类中。完成后,您可能会发现不需要对这种类型进行子类化。无论哪种方式,您都可以在以后随着您的范围扩大并且发现您已经定义了各个车道行为时始终从这种类型继承。

    一旦你有了你的基类类型,你就可以将 4 个类的实例添加到场景中。

    或者,如果您选择,您可以添加 2 个基类类型,并说 2 个从基类继承的类型。

    好的,所以您创建一个新的 .swift(我假设您使用 Swift)删除其中不是注释的任何内容,然后为基类编写

    import SpriteKit
    
    class ______: SKNode  {
    
        init() {
            super.init()
        }
    
        required init?(coder aDecoder: NSCoder) {
            super.init(coder: aDecoder)
        }
    
        public func update() {        
    
        }
    
        public func updateDidEnd() {
    
        }
    
        deinit {
            print("DEBUG: ________: deinit")
        }
    
    }
    

    这是我在子类化 SKNode 时使用的样板。它给出 _______ 的地方只需添加类的名称

    当你想从这个类继承子类时,只需做同样的事情,但将第二行的 SKNode 替换为你分配给基类的任何名称。您可以随心所欲地继续这样做。

    特别要查看封装,以确定您想要在其中放入的内容。当子类化考虑多态性时,它需要一点时间来适应,但是一旦点击它就会使编写代码更快。

    你有很多选择

    【讨论】:

    • 我不知道的部分是架构上如何将这些子类放在一个单独的文件中,然后将它们作为属性添加到我的场景文件中
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 2017-04-17
    • 2019-11-26
    • 1970-01-01
    • 1970-01-01
    • 2017-03-23
    相关资源
    最近更新 更多