Ios 如何在一个框架下导入多个swift游戏并为其创建主菜单?

Ios 如何在一个框架下导入多个swift游戏并为其创建主菜单?,ios,swift,xcode,swift3,sprite-kit,Ios,Swift,Xcode,Swift3,Sprite Kit,我想实现一个游戏平台,已经实现了三个swift游戏(通过使用单视图项目)分别。现在我想实现一个主菜单,它有三个按钮:游戏a、游戏B和游戏C。当用户按下按钮时,相应的游戏将启动。你能告诉我如何用更少的努力做到这一点吗?和Java一样,我们可以为每个项目创建一个jar,然后在其他Java项目中调用它们。斯威夫特也有类似的方式吗?谢谢。如果您拥有所有代码,请创建一个独特的项目。您应该在每个带按钮的方法中创建一个序列。为此,在故事板中创建一个序列(从一个VC拖动到另一个VC),然后单击它并给它一个标识符

我想实现一个游戏平台,已经实现了三个swift游戏(通过使用单视图项目)分别。现在我想实现一个主菜单,它有三个按钮:游戏a、游戏B和游戏C。当用户按下按钮时,相应的游戏将启动。你能告诉我如何用更少的努力做到这一点吗?和Java一样,我们可以为每个项目创建一个jar,然后在其他Java项目中调用它们。斯威夫特也有类似的方式吗?谢谢。

如果您拥有所有代码,请创建一个独特的项目。您应该在每个带按钮的方法中创建一个序列。为此,在故事板中创建一个序列(从一个VC拖动到另一个VC),然后单击它并给它一个标识符。在按钮式方法中,使用performsguewithidentifier(“您的标识符”),就是它

编辑: 好的,我会尽量更具体地帮助你。要创建你想要的应用程序,你需要在同一个项目中的所有代码(全部关于三个游戏)。 因此,在Xcode中,您必须创建四个viewController(三个用于游戏,另一个用于菜单)。要执行此操作,请转到Main.storyboard文件(默认情况下,在创建项目时会有该文件),然后拖动viewController视图(右下)。然后,您必须为它们中的每一个创建一个自定义类(从UIViewController继承)。然后在情节提要中,再次为每个viewController选择自定义类(已创建的类)

谈论这些片段,您可以学习如何创建它们。 它基本上是在ViewController之间移动的一种方式。创建一个时,您必须使用
performsguewithidentifier(“yourSegueIdentifier”,发件人:nil)
将该代码放在按钮的按钮标记方法中(了解所有信息)


好吧,如果你不明白什么,请告诉我。祝你好运

您可以创建一个SpriteKit场景作为游戏的主菜单,使用三个不同的按钮切换到每个游戏场景。可以使用SKLabelNode创建标题,并将精灵或形状节点用作场景的按钮

我曾经在SpriteKit场景中添加过UIButtons和UILabel,但在定位它们时会遇到非常技术性的问题。由于UI对象位于视图上,而不是直接位于SpriteKit场景上。对于菜单场景,可以使用SKSpriteNode作为按钮,使用SKLabelNode作为标题

精灵套件场景放置在UIView上,并根据您定义的缩放模式进行缩放。苹果默认缩放模式。aspectFill不需要调整精灵套件对象在不同手机设备屏幕大小上的定位

这是一个SKSpriteNode的自定义类,具有与按钮相同的功能

 import Foundation
 import SpriteKit

 class ButtonLabelNode : SKSpriteNode {

let buttonPressed: () -> ()

init(texture: SKTexture?, color: UIColor, size: CGSize, text: String, buttonPressed: @escaping () -> ()) {

self.buttonPressed = buttonPressed

super.init(texture: texture, color: color, size: size)

let label = SKLabelNode(fontNamed: "Futura")
label.fontSize = 50
label.fontColor = SKColor.red
label.position = CGPoint.init(x: 0.0, y: 0.0)
label.zPosition = 1
label.verticalAlignmentMode = .center
label.text = text
self.addChild(label)

self.isUserInteractionEnabled = true

  }

  override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {

     self.alpha = 0.8

    }

   override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {

   self.alpha = 1.0

    buttonPressed()
    }

   required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
  }

   }
     import Foundation
     import SpriteKit

     class SKShapeButton: SKShapeNode {

    init(circleOfRadius: CGFloat) {
       super.init()

    let diameter = circleOfRadius * 2.0
    self.path = CGPath(ellipseIn: CGRect(origin: CGPoint.init(x: 0.0 - circleOfRadius, y: 0.0 - circleOfRadius), size: CGSize(width: diameter, height: diameter)), transform: nil)
    self.isUserInteractionEnabled = true
}

required init?(coder aDecoder: NSCoder) {
    fatalError("init(coder:) has not been implemented")
}

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    self.alpha = 0.8

}

override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {

    self.alpha = 1.0
}

 }
如果希望按钮具有不同的形状或唯一的形状,可以将ShapeNode(而不是SpriteNode)细分为子类,并实现相同的功能,下面是一个如何将圆形ShapeNode创建为按钮的示例

 import Foundation
 import SpriteKit

 class ButtonLabelNode : SKSpriteNode {

let buttonPressed: () -> ()

init(texture: SKTexture?, color: UIColor, size: CGSize, text: String, buttonPressed: @escaping () -> ()) {

self.buttonPressed = buttonPressed

super.init(texture: texture, color: color, size: size)

let label = SKLabelNode(fontNamed: "Futura")
label.fontSize = 50
label.fontColor = SKColor.red
label.position = CGPoint.init(x: 0.0, y: 0.0)
label.zPosition = 1
label.verticalAlignmentMode = .center
label.text = text
self.addChild(label)

self.isUserInteractionEnabled = true

  }

  override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {

     self.alpha = 0.8

    }

   override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {

   self.alpha = 1.0

    buttonPressed()
    }

   required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
  }

   }
     import Foundation
     import SpriteKit

     class SKShapeButton: SKShapeNode {

    init(circleOfRadius: CGFloat) {
       super.init()

    let diameter = circleOfRadius * 2.0
    self.path = CGPath(ellipseIn: CGRect(origin: CGPoint.init(x: 0.0 - circleOfRadius, y: 0.0 - circleOfRadius), size: CGSize(width: diameter, height: diameter)), transform: nil)
    self.isUserInteractionEnabled = true
}

required init?(coder aDecoder: NSCoder) {
    fatalError("init(coder:) has not been implemented")
}

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    self.alpha = 0.8

}

override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {

    self.alpha = 1.0
}

 }
要转换到每个游戏场景,可以实现游戏视图控制器swift文件中的代码,该文件显示提供的游戏场景

      override func didMove(to view: SKView) {

let labelNode = LabelNode(texture: nil, color: .white, size: CGSize.init(width: 200, height: 100), text: "Play", buttonPressed: playButton)
labelNode.position = CGPoint(x: self.frame.midX, y: self.frame.midY)

self.addChild(labelNode)

}

func playButton() 
{
print("play")
 }
      override func didMove(to view: SKView) {

    let shapeButton = SKShapeButton(circleOfRadius: 50)
    shapeButton.fillColor = .red

    shapeButton.position = CGPoint(x: self.frame.midX, y: self.frame.midY)
    self.addChild(shapeButton)
     }
      if let view = self.view as! SKView? {
        // Load the SKScene from 'GameScene.sks'
        if let scene = SKScene(fileNamed: "GameScene") {
            // Set the scale mode to scale to fit the window
            scene.scaleMode = .aspectFill

            // Present the scene
            view.presentScene(scene)
        }

        view.ignoresSiblingOrder = true

        view.showsFPS = true
        view.showsNodeCount = true
    }

请理解,无论您如何执行此操作,应用商店中仍将有一个应用程序(或捆绑ID)。我们希望它是一个应用程序。你知道这样做的方法吗?如果你想在应用商店中使用,就不知道了。我建议——在进一步深入之前——调查应用商店政策、iOS应用程序沙箱和定价。我能想到的唯一方法仍然是一个应用程序或捆绑ID和一个非常大的项目,其中应用程序中的每个游戏都是一个IAP或应用内购买。但说真的,在浪费大量的辛勤工作和时间之前,请仔细阅读苹果在他们的应用商店中允许的内容。还有一件事——看看外面有什么——如果你找到了一个你想要的好例子,看看它是怎么做到的。我是ios的初学者。你能告诉我更多关于那件事吗?或者有关于如何做到这一点的视频或材料吗?谢谢