我正在使用GameKit作为新程序员来制作实时Game Center游戏,但是遇到了一些障碍。
我能够正确初始化本地播放器,显示配对控制器,并接收和接受邀请,但是,即使在我接受邀请之后, matchmakerViewController:didFindMatch
也不会被调用,也不会返回任何匹配项。我极有可能没有正确接受邀请,但据我所拥有的苹果开发人员论坛称。如果有人可以查看这段代码并让我知道如何调用该方法,那就太好了!
let request = GKMatchRequest()
class SecondScreenViewController : UIViewController, UINavigationControllerDelegate, GKMatchmakerViewControllerDelegate, GKLocalPlayerListener {
let button = UIButton()
let softRed = UIColor(red: 1, green: 61 / 255, blue: 61 / 255, alpha: 1)
let softblue = UIColor(red: 38 / 255, green: 149 / 255, blue: 1, alpha: 1)
let TestMatchMaker = GKMatchmaker()
let TestMatch = GKMatch()
var TestViewController = GKMatchmakerViewController(matchRequest: request)
var player = GKLocalPlayer.local
override func viewDidLoad() {
super.viewDidLoad()
player.register(self)
setupButton()
SetupRequest()
view.backgroundColor = softblue
}
func matchmakerViewControllerWasCancelled(_ viewController: GKMatchmakerViewController) {
dismiss(animated: true, completion: nil)
print("cancelled")
}
func matchmakerViewController(_ viewController: GKMatchmakerViewController, didFailWithError error: Error) {
print(error.localizedDescription + "THIS IS AN ERROR FROM THE VIEWCONTROLLER")
}
func matchmakerViewController(_ viewController: GKMatchmakerViewController, didFind match: GKMatch) {
print("Found Match Successfully")
let TestMatch = match
print(TestMatch)
}
func player(_ player: GKPlayer, didAccept invite: GKInvite) {
print(invite)
print("Aceppted Invite")
TestViewController?.setHostedPlayer(player, didConnect: true)
}
func player(_ player: GKPlayer, didRequestMatchWithRecipients recipientPlayers: [GKPlayer]) {
print("Requested Match")
}
func SetupRequest() {
request.minPlayers = 2
request.maxPlayers = 2
request.inviteMessage = "test Invite"
}
func setupButton() {
button.backgroundColor = UIColor.white
button.setTitleColor(softblue, for: .normal)
button.setTitle("MatchMake", for: .normal)
button.addTarget(self, action: #selector(ButtonTapped), for: .touchUpInside)
view.addSubview(button)
setupButtonConstraints()
}
func setupButtonConstraints() {
button.translatesAutoresizingMaskIntoConstraints = false
button.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 30).isActive = true
button.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -30).isActive = true
button.heightAnchor.constraint(equalToConstant: 100).isActive = true
button.centerYAnchor.constraint(equalTo: view.centerYAnchor, constant: 0).isActive = true
}
@objc func ButtonTapped() {
present(TestViewController!, animated: true, completion: {
self.TestViewController!.delegate = self})
TestViewController?.matchmakerDelegate = self
}
}
答案 0 :(得分:0)
我看到的唯一可能是当您设置媒人代理时。这是我用来邀请玩家的代码,它工作正常:
func invitePlayers(){
let request = GKMatchRequest()
request.minPlayers = 2
request.maxPlayers = 4
request.defaultNumberOfPlayers = 2
let vc = GKMatchmakerViewController(matchRequest: request)
vc?.matchmakerDelegate = self
self.present(vc!, animated: true)
}
请注意,在显示ViewController之前已设置matchmakerDelegate。