IOS GameCenter编程入门

IOS GameCenter编程入门

 注意本篇为基础教程,主要你用GameCenter的现有组成原件进行编程,如果希望进行高度自定义化的编程请参考苹果的 GameCenter Programming Guide

本篇博客分为以下几个部分:
 1.GameCenter中的几个核心概念:

//初始化认证相关
 GKPlayer

//访问GameCenter中心有关
 GKGameViewController
 GKAchievement
 GKChallenge
 GKLeadBoard

//通讯有关
 GKMatchRequest
 GKMatch
 GKMatchMaker
 GKMatchMakerViewController

2.GameCenter的具体实例:
 初始化
 查看leadBoard/challenge
 匹配
 通讯


GameCenter核心概念
GKPlayer
 (数据包装类)
概述:用来指代GameCenter中的玩家,里面主要包含了关于游戏玩家的ID,姓名,是否好友,等等信息,具体请查看reference

GKLocalPlayer继承自GKPlayer
 (功能类)
概述:用来指代本地玩家,即玩家自己
  与GKPlayer不同点:GKPlayer主要是一个数据类,而GKLocalPlayer可以说是一个功能类.
主要功能:
 1.进行本地GameCenter的登录,只有登录后,才能进行后面的一系列的操作
 2.获取好友自己的好友信息
 3.获取自己的leadBoard的信息
 4.注册listener(监听有没有人向自己发起游戏邀请)
 5.进行游戏保存方面的处理

GKGameViewController
(控制器类)
概述:管理系统自带的控制中心的界面在程序中的显示,提供了显示,排行榜,成就,挑战等功能
主要功能:
通过对viewState的选择来控制显示leadBoard,Achievements,Challenges界面

GKAchievement
GKChallenge
GKLeadBoard
概述:获取成就,挑战,积分榜信息

GKMatchRequest
概述:游戏匹配申请,在这里面自己调整参数,来生成自己想要的游戏申请,比如两个人的对战,三个人的对战

GKMatchMaker
概述:进行游戏匹配

GKMatchMakerViewController
概述:系统已经帮我们定义好的游戏匹配界面,我们只需要向它提交,GKMatchRequest就可以进行匹配申请,其中可以选择是邀请好友,或是自动匹配对手

GameCenter流程图
流程图


GameCenter具体实例

1.LocalPlayer的认证


let lp = GKLocalPlayer.localPlayer() //lp:=LocalPlayer

//下面的过程在程序中完成的位置越早越好,比如在AppDelegate中,向localPlayer传送一个closure,localplayer会在需要的时候自动调用closure
    lp.authenticateHandler = {(VC,error) in
        //VC是一个用来进行GameCenter登录的视图控制器,如果VC不为空,那么就显示视图控制器来要求用户登录
        if VC != nil {
            self.window?.rootViewController?.presentViewController(VC, animated: true, completion: nil)
        }else if lp.authenticated{
            println("Player authenticated")
        }else {
            println("Player didn't authenticated")
        }
    }

2.查看leadBoard 或是Chanllenge或是Achievement

 let gameVC = GKGameCenterViewController()
     gameVC.gameCenterDelegate = self
     gameVC.viewState = GKGameCenterViewControllerState.Leaderboards//属性还可以是GKGameCenterViewControllerState.Achievements或是GKGameCenterViewControllerState.Challenges
     self.presentViewController(gameVC, animated: true, completion: nil)

3.匹配

        //初始化matcheRequest
        let matchRequest = GKMatchRequest()
        matchRequest.minPlayers = 2;
        matchRequest.maxPlayers = 2;
        matchRequest.defaultNumberOfPlayers = 2;

        //通过matchRequest初始化GKMatchmakerViewController
        let mmVC = GKMatchmakerViewController(matchRequest: matchRequest)
        mmVC.matchmakerDelegate = self;
        self.presentViewController(mmVC, animated: true, completion: nil)




接下来会通过delegate返回GKMatch对象
func matchmakerViewController(viewController: GKMatchmakerViewController!, didFindMatch match: GKMatch!) {
        self.dismissViewControllerAnimated(true, completion: nil)
        self.match = match
        match.delegate = self

        if !matchStarted && match.expectedPlayerCount == 0 {
            matchStarted = true
        }
    }

4.通讯

//发送
        let helloString = "hello"
        let dataToSend = helloString.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true)

        match.sendDataToAllPlayers(dataToSend, withDataMode: GKMatchSendDataMode.Reliable, error: NSErrorPointer())

//接受通过GKMatch的delegate进行接收
func match(match: GKMatch!, didReceiveData data: NSData!, fromPlayer playerID: String!) {
        if let helloString = NSString(data: data, encoding: NSUTF8StringEncoding){
            println(helloString)
        }else{
            println("can't resolve recieved data")
        }
    }

文章到这里就完了,如果要了解更多的信息,可以参考苹果的GameKit开发指南,如果文中有任何不对的,欢迎指正,还有就是这是我第一篇博客的啦,如果有小错误的话,希望大家能多多包涵

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值