美文网首页unity3D技术分享Unity3D与游戏开发征服Unity3d
五、Unity3D与SuperSocket开源项目跑得快棋牌游戏

五、Unity3D与SuperSocket开源项目跑得快棋牌游戏

作者: e29290bad2f3 | 来源:发表于2019-02-20 09:49 被阅读22次

添加广告,希望能赚点水果钱,目的演示基于本项目,快速进行二次开发

QQ群:786442484

豆豆跑得快
安卓下载 :https://fir.im/emua
备注:下载可以运行,点击钻石加号,看视频广告,获取测试钻石

runner项目(开源跑得快)
地址:https://139.199.213.123/svn/runner/
用户:runner
密码:abc123
权限:read

一、修改协调文件OneProtocol.proto

  • 添加CMD
CMD_ADS_REWARD_REQ = 71;//广告奖励请求
CMD_ADS_REWARD_RESP = 72;//广告奖励响应
  • 添加Message
/*******************************************   广告  *************************************************/
message AdsRewardRequest
{
}

message AdsRewardResponse
{
    required int32 diamondNum = 1;
}
  • 完整OneProtocol.proto,查看svn


    image.png

二、生成代码

  • 点击pbgen.bat,转换C#代码


    image.png
    image.png
  • 把生成的OneProtocol.pb.cs,拷贝到服务器与客户端工作目录
    服务器目录:D:\svn_projects\runner\trunk\server\runner\Protobuf\Pb
    客户端目录:D:\svn_projects\runner\trunk\client\runner\Assets\Scripts\Network\Pb

  • 提交svn


    image.png

三、修改服务器代码

  • 修改服务器代码文件PurchaseHandler.cs,添加广告协议监听处理
        #region 广告
        [method: RunnerHandler(Cmd.CMD_ADS_REWARD_REQ, "广告奖励")]
        void OnAdsRewardReq(GameSession session, OneMessage message)
        {
            if (session.PlayerId > 0)
            {
                PlayerBase player = PlayerManager.Instance.GetPlayer(session.PlayerId, true);
                if (null != player)
                {
                    player.UpdateDiamond(1, ItemChangeSource.Normal);

                    AdsRewardRequest req = PbHelper.Parse<AdsRewardRequest>(message.data, 0, message.data.Length);

                    EchoAdsRewardToClient(session);
                }
            }
        }

        void EchoAdsRewardToClient(GameSession session)
        {
            AdsRewardResponse resp = new AdsRewardResponse();
            resp.diamondNum = 1;

            OneMessage message = new OneMessage();
            message.cmd = Cmd.CMD_ADS_REWARD_RESP;
            message.result = Result.RESULT_OK;
            message.data = PbHelper.Pack(resp);
            message.seq = session.Seq;

            session.SendMessage(message);

            Logger.Debug("EchoAdsRewardToClient diamondNum :" + resp.diamondNum);
        }
        #endregion

四、修改客户端代码

  • 修改客户端代码文件SocketServiceExActivity.cs,广告奖励协议
    public static void ReqAdsReward(this SocketService net)
    {
        OneMessage msg = new OneMessage();
        msg.cmd = Cmd.CMD_ADS_REWARD_REQ;
        msg.result = Result.RESULT_OK;

        AdsRewardRequest adsRewardRequest = new AdsRewardRequest();

        net.SendMessage(msg, adsRewardRequest);
    }
  • 修改客户端代码HomeUI.cs,在广告播放成功后,发送广告奖励协议
    void HandleShowResult(ShowResult result)
    {
        if (result == ShowResult.Finished)
        {
            // Reward the player
            Debug.Log("Reward the player");
            ActivityManager.Instance.SendAdsReward();
        }
        else if (result == ShowResult.Skipped)
        {
            Debug.LogWarning("The player skipped the video - DO NOT REWARD!");
        }
        else if (result == ShowResult.Failed)
        {
            Debug.LogError("Video failed to show");
        }
    }

   void OnAdsReward(int diamondNum)
    {
        UIController.Instance.Alert("恭喜获得钻石" + diamondNum + "个");
    }

五、提交svn

image.png

相关文章

网友评论

    本文标题:五、Unity3D与SuperSocket开源项目跑得快棋牌游戏

    本文链接:https://www.haomeiwen.com/subject/mlscyqtx.html