Unity3d学习之路-初识GameSparks多人游戏插件

初识GameSparks多人游戏插件

简介

本文跟随Building a Turn-Based Multiplayer Game with GameSparks and Unity对GameSparks进行学习,做一个联网五子棋的游戏,教程中在GameSparks中的js云代码我没有修改,Unity上代码有所修改

GameSparks介绍

GameSparks是一个云服务,可以提供用户认证,自定义匹配,回合制或多人游戏,玩家和游戏数据存储等功能。GameSparks可以与客户端通信,可以在通信拦截点(比如收到请求但在处理前,发送消息前等)执行云代码,完成自定义的功能。在unity中使用GameSparks,直接在官网下载,然后导入项目中即可

创建游戏

官方教程创建一个游戏比较友好,讲得很清楚,这次作业做一个联网五子棋游戏,所以就只使用GameSparks提供的Events、Multiplayer、Cloud Code服务。

图片

云服务配置

Authentication

用户验证不用修改,直接使用GameSparks提供的验证方法,使用用户名和密码登录。

Matches

Matches类似于一个游戏房间,它可以设置游戏开始的最低人数和最多人数,在Thresholds中可以自定义玩家匹配,还可以使用自定义的脚本对匹配过程进行控制等。通过Configuration/Multiplayer可以进入该页面。

图片

Challenge

Challenge类似于一个游戏,当Matches匹配成功达到进入游戏的最低人数的时候,就会触发Challenge开始。在整个游戏中,客户端传递的消息,会在Challenge的有关函数中进行处理,通过Configuration/Multiplayer可以进入该页面。

图片

MatchFoundMessage

Configurator/CloudCode选择UserMessages/MatchFoundMessage,编写在匹配成功时候将要执行的代码。这次游戏是判断客户端的玩家ID是不是第一个先匹配的玩家ID,然后将它作为挑战者(类似于房主),然后创建一个新的Challenge,将其他玩家添加到Challenge中。代码见:博客传送门

ChallengeIssuedMessage

Configurator/CloudCode选择UserMessages/ChallengeIssuedMessage,编写Challenge创建成功后将Challenge的详细信息发送到客户端。代码见:博客传送门

Event

Event是客户端进行某个操作后会触发云端的实现,可以定义传入的参数。这次游戏创建一个Move事件,当客户端的玩家落子的时候会触发这个事件。参数是X,Y,代表落子的位置。

图片

游戏逻辑云代码

  • Board

    Configurator/CloudCode选择Modules,新建一个Modules叫Board。使用一个一维数组存储了棋盘上的信息(棋子类型或空),可以初始化棋盘,得到棋盘的对应位置的信息,修改棋盘对应位置的信息,检测落子是否有效以及检测游戏是否结束。代码见:博客传送门

  • Move

    Configurator/CloudCode选择ChallengeEvents/Move,在里面实现当玩家落子之后的代码,玩家落子后,传入发送落子位置的消息到服务器上,然后服务器获取玩家的信息使用刚才新建的Board,判断落子是否有效,切换下一个玩家,检测游戏是否结束。代码见:博客传送门

Unity实现

登录/注册界面

首先导入GameSparks的unity包,然后找到GameSparksSettings将网页上的Api Key和API Secret填入。

图片
图片

创建一个空对象,命名为GameSparksManager,然后将GameSparksUnity脚本作为组件,Settings选择GameSparksSettings。

图片

创建UI,在Panel上有用户名输入框,密码输入框,注册按钮,登录按钮。将LoginPanel脚本挂载在Panel上。脚本使用GameSparks的Api,在按钮点击的时候向服务端发送消息,GameSparks会自动检测用户是否重名,密码是否正确等,并且将消息返回客户端。在登录、注册成功成功则转到主界面。

public class LoginPanel : MonoBehaviour
{
    public InputField userNameInput;           //用户名输入框
    public InputField passwordInput;           //密码输入框
    public Button loginButton;                 //登录按钮
    public Button registerButton;              //注册按钮
    public Text errorMessageText;              //错误消息文本

    void Awake()
    {
        loginButton.onClick.AddListener(Login);
        registerButton.onClick.AddListener(Register);
    }

    private void Login()
    {
        BlockInput();
        //发送登录用户的请求
        AuthenticationRequest request = new AuthenticationRequest();
        request.SetUserName(u
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值