MultiplayerKit
示例
要运行示例项目,请首先将其克隆,然后从 Example 目录中运行 pod install
需求
安装
MultiplayerKit 可通过 CocoaPods 获得。要安装它,只需将以下行添加到您的 Podfile 中
pod 'MultiplayerKit'
设置
首先需要使菜单场景和游戏场景符合 MKMenuScene 和 MKGameScene 协议。示例
final class MenuScene: SKScene, MKMenuScene {
var matchmaker: Matchmaker?
func didAuthenticationChanged(to state: Matchmaker.AuthenticationState) {
}
func willStartGame() {
//Presenting Scene example:
view?.presentScene(GameScene(), transition: SKTransition.crossFade(withDuration: 1.0))
}
}
class GameScene: SKScene, MKGameScene {
var multiplayerService: MultiplayerService
func didReceive(message: Message, from player: GKPlayer) {
//Your Implementation
}
func didPlayerConnected() {
//Your Implementation
}
}
! MenuScene must be final class
在 GameViewController 中实例化 Matchmaker 和菜单场景
if let skView = view as? SKView {
let matchmaker = Matchmaker(authenticationViewController: self)
let menuScene = MenuScene(matchmaker: matchmaker)
skView.presentScene(menuScene)
}
创建自定义消息
创建一个符合“消息协议”的struct。示例:
struct Position: Message {
var point: CGPoint, angle: CGFloat
}
发送消息
在你的GameScene中调用MultiplayerService的send(_ message: Message)
方法。示例:
let position = Position(point: playerPosition, angle: playerAngle)
multiplayerService.send(position)
接收消息
GameScene中的didReceive(message: Message, from player: GKPlayer)
方法负责接收所有消息。示例:
func didReceive(message: Message, from player: GKPlayer) {
guard let playerNode = allPlayersNode[player] else { return }
switch message {
case let position as Position:
playerNode.changePlayer(position: position.point, angle: position.angle)
case let startGame as StartGame:
//Start game Logic
case let attack as Attack:
//Player attack Logic
default:
break
}
}
作者
jonhpol, [email protected]
授权
MultiplayerKit遵循MIT授权。更多信息请参阅LICENSE文件。