熬玩游戏源码-游戏软件开发、游戏

代码、H5游戏源代码

一、游戏软件开发的功能

1、游戏难度:游戏软件开发多种游戏难度,用户可以选择适合自己的难度玩游戏熬玩游戏源码,保证用户的游戏体验。

2、房间创建:游戏代码支持用户创建游戏卧室,房屋创建成功后,可以请好友走进卧室,或者等待用户主动踏入卧室。3、语音沟通

:H5游戏源码实现游戏卧室语音沟通熬玩游戏源码,方便用户随时表达意见、互动。

4.用户观看:用户可以选择卧室观看战斗,观看其他用户的游戏过程,并从游戏经验中学习。

5、礼品奖励:实现用户小费功能,在游戏过程中,可以选择喜欢的用户赠送礼物。

6、积分排名:系统根据用户的游戏结果结算积分,根据积分对系统中的用户进行排名。

以上只是基础功能,更多功能可联系客服看演示

二、公司游戏代码优势

熬玩游戏源码-游戏软件开发、游戏

1、多年游戏软件开发技术积累,开发实力雄厚。

2、游戏代码开发团队完备,开发人员经验丰富。

3、丰富的游戏代码合作经验,为多家公司提供游戏开发合作。

熬玩游戏源码-游戏软件开发、游戏

4.严格的报价机制,根据报价的发展时间,公平合理。

5.实体开发公司支持客户参观公司。

3、免费售后H5游戏源码

1、实现游戏软件开发的全球化部署,提供源码建设和部署服务。

2、培训游戏软件开发技术,帮助客户更快理解系统技术。

3、为H5游戏源码提供远程技术协助,协助数据迁移。

4、提供所有资料单证及售后在线客服。

实战:用户登录和注册

至此,服务端框架的底层功能已经完成,所以目前的测试方式只是在main函数中写一些测试代码游戏下线源码,并没有真正与Unity结合起来,所以我们就跟Unity结合起来,真正做一个完整的登录和注册过程。

既然是登录和注册,那么肯定有登录和注册两个契约:

我们创建一个新的 LoginMsg 脚本:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;


public class MsgRegister : MsgBase
{
    public MsgRegister()
    
{
        protoName = "MsgRegister";
    }
    //客户端
    public string id = "";
    public string pw = "";

    //服务器返回 -0成功 -1失败
    public int result = 0;

}


public class MsgLogin : MsgBase
{
    public MsgLogin()
    
{
        protoName = "MsgLogin";
    }
    //客户端
    public string id = "";
    public string pw = "";

    //服务器返回 -0成功 -1失败
    public int result = 0;
}

public class MsgKick : MsgBase
{
    public MsgKick()
    
{
        protoName = "MsgKick";
    }
    //下线原因
    public int reason = 0;
}

下一步是处理合同:

我们将其命名为:LoginMsgHandle。 请注意游戏下线源码,即使脚本被称为 this,它仍然是 EventHandler 的复合类。 不要被Unity开发中创建脚本的方式所迷惑。

登录、注册和离线。 下线用于两个客户端同时登录一个账户时:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

public partial class MsgHandler
{
    //注册协议处理
    public static void MsgRegister(ClientState c, MsgBase msgBase)
    
{
        MsgRegister msg = (MsgRegister)msgBase;
        //执行数据库语法尝试注册
        if (DbManager.Register(msg.id, msg.pw))
        {
            DbManager.CreatPlayer(msg.id);
            msg.result = 0;
        }
        else
        {
            msg.result = 1;
        }
        //将结果返回给客户端
        NetManager.Send(c, msg);
    }

    //登录协议处理
    public static void MsgLogin(ClientState c, MsgBase msgBase)
    
{
        MsgLogin msg = (MsgLogin)msgBase;
        //密码校验
        if (!DbManager.CheckPassword(msg.id, msg.pw))
        {
            msg.result = 1;
            NetManager.Send(c, msgBase);
            return;
        }
        //如果已经在线,并在此客户端上又尝试登录
        if (c.player != null)
        {
            msg.result = 1;
            NetManager.Send(c, msgBase);
            return;
        }
        //如果其他客户端登录,踢下线
        if (PlayerManager.isOnline(msg.id))
        {
            //发送踢下线协议
            Player other = PlayerManager.GetPlayer(msg.id);
            MsgKick msgKick = new MsgKick();
            msgKick.reason = 0
            other.Send(msgKick);//协议发送
            //断开连接
            NetManager.Close(other.state);
        }
        //获取玩家数据
        PlayerData playerData = DbManager.GetPlayerData(msg.id);
        if (playerData == null)
        {
            msg.result = 1;
            NetManager.Send(c, msg);
            return;
        }
        //构建player
        Player player = new Player(c);
        player.id = msg.id;
        player.data = playerData;
        PlayerManager.AddPlayer(msg.id, player);
        c.player = player;
        //返回协议
        msg.result = 0;
        player.Send(msg); 
    }

    public static void OnDisconnect(ClientState c)
    
{
        Console.WriteLine("Close");
        //Player 下线
        if (c.player != null)
        {
            //保存数据
            DbManager.UpdatePlayerData(c.player.id, c.player.data);
            //移除
            PlayerManager.RemovePlayer(c.player.id);
        }
    }
}

至此,服务器的功能就基本写完了。 接下来,我们需要进入Unity。 要编写客户端的功能,首先要搭建一个场景。 场景布局如下:

2个输入框和一个登录注册按钮。

创建一个新的测试脚本文件:

过程也是先连接服务器,然后监听一些反弹方法。 首先,有一些连接服务器和数据处理的技巧。 这些技巧前面章节都写了,所以这次我们直接照搬:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
using System.Linq;
using TMPro;

public class test : MonoBehaviour


    private void Start()
    
{
        NetManager.Connect("127.0.0.1"8888); 

    }


    private void Update()
    
{
        NetManager.Update();
    }

}

另外,复制登录和注册合同:

在服务器启动的同时运行这个脚本,发现连接没有问题。 接下来要做的就是编写我们的登录注册合约:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
using System.Linq;
using TMPro;

public class test : MonoBehaviour
{
    public TMP_InputField idInput;
    public TMP_InputField pwInput;

    private void Start()
    
{
        NetManager.Connect("127.0.0.1"8888);
        NetManager.AddMsgListener("MsgMove", OnMsgMove);
        NetManager.AddEventListener(NetManager.NetEvent.ConnectSucc, OnConnectSucc);
        NetManager.AddEventListener(NetManager.NetEvent.ConnectFail, OnConnectFail);
        NetManager.AddEventListener(NetManager.NetEvent.Close, OnConnectClose);
    }



    void OnConnectSucc(string err)
    
{
        Debug.Log("连接成功...");
    }

    void OnConnectFail(string err)
    
{
        Debug.Log("连接失败...");
    }

    void OnConnectClose(string err)
    
{
        Debug.Log("连接关闭...");
    }

    //发送注册协议
    public void OnRegister()
    
{
        MsgRegister msg = new MsgRegister();
        msg.id = idInput.text;
        msg.pw = pwInput.text;
        NetManager.Send(msg);
        Debug.Log(msg.protoName);
        Debug.Log(msg.id);
        Debug.Log(msg.pw);
    }
    //收到注册协议
    public void OnMsgRegister(MsgBase msgBase)
    
{
         MsgRegister msg = msgBase as MsgRegister;        if (msg.result == 0)
        {
            Debug.Log("注册成功");
        }
        else
        {
            Debug.Log("注册失败!");
        }
    }

    //发送登录协议
    public void OnLoginClick()
    
{
        MsgLogin msg = new MsgLogin();
        msg.id = idInput.text;
        msg.pw = pwInput.text;
        NetManager.Send(msg);
    }

    //收到登录协议
    public void OnMsgLogin(MsgBase msgBase)
    
{
        MsgLogin msg = msgBase as MsgLogin;        if (msg.result == 1)
        {
            Debug.Log("登录成功");
        }
        else
        {
            Debug.Log("登录失败");
        }
    }

    //踢下线
    void OnMsgKick(MsgBase msgBase)
    
{
        Debug.Log("被踢下线");
    }


    private void Update()
    
{
        NetManager.Update();
    }

然后对输入框进行参数化:

我们先尝试运行一下,先输入错误的用户名和密码,然后按登录按钮:

发现服务器已经调用成功,然后我们用正确的账户名和密码登录:

然后尝试再次注册:

如果写入现有帐户:

相反,写入未注册的帐户:

然后查看数据库的内容:

发现一个错误。 客户端没有复制出状态信息。 经检查,合同名称有误:

编辑一下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
using System.Linq;
using TMPro;

public class test : MonoBehaviour
{
    public TMP_InputField idInput;
    public TMP_InputField pwInput;

    private void Start()
    
{
        NetManager.Connect("127.0.0.1"8888);
        NetManager.AddMsgListener("MsgMove", OnMsgMove);
        NetManager.AddMsgListener("MsgLogin", OnMsgLogin);
        NetManager.AddMsgListener("MsgRegister", OnMsgRegister);
        NetManager.AddEventListener(NetManager.NetEvent.ConnectSucc, OnConnectSucc);
        NetManager.AddEventListener(NetManager.NetEvent.ConnectFail, OnConnectFail);
        NetManager.AddEventListener(NetManager.NetEvent.Close, OnConnectClose);

    }

    public void Send()
    
{
        MsgMove msgMove = new MsgMove
        {
            x = 10,
            y = 2,
            z = -110
        };
        NetManager.Send(msgMove);
    }

    public void OnMsgMove(MsgBase msgBase)
    
{
        MsgMove msg = msgBase as MsgMove;
        Debug.Log(msg.protoName);
        Debug.Log(msg.x);
        Debug.Log(msg.y);
        Debug.Log(msg.z);
    }


    void OnConnectSucc(string err)
    
{
        Debug.Log("连接成功...");
    }

    void OnConnectFail(string err)
    
{
        Debug.Log("连接失败...");
    }

    void OnConnectClose(string err)
    
{
        Debug.Log("连接关闭...");
    }

    //发送注册协议
    public void OnRegister()
    
{
        MsgRegister msg = new MsgRegister();
        msg.id = idInput.text;
        msg.pw = pwInput.text;
        NetManager.Send(msg);

    }
    //收到注册协议
    public void OnMsgRegister(MsgBase msgBase)
    
{
        MsgRegister msg = msgBase as MsgRegister;
        if (msg.result == 0)
        {
            Debug.Log("注册成功");
        }
        else
        {
            Debug.Log("注册失败!");
        }
    }

    //发送登录协议
    public void OnLoginClick()
    
{
        MsgLogin msg = new MsgLogin();
        msg.id = idInput.text;
        msg.pw = pwInput.text;
        NetManager.Send(msg); 
    }

    //收到登录协议
    public void OnMsgLogin(MsgBase msgBase)
    
{
        MsgLogin msg = msgBase as MsgLogin;
        Debug.Log(msg.result);
        if (msg.result == 1)
        {
            Debug.Log("登录成功");
        }
        else
        {
            Debug.Log("登录失败");
        }
    }

    //踢下线
    void OnMsgKick(MsgBase msgBase)
    
{
        Debug.Log("被踢下线");
    }


    private void Update()
    
{
        NetManager.Update();
        if (Input.GetKeyDown(KeyCode.A))
        {
            Send();
        }
    }

结果如下:

好好享受!!!

本例客户端和服务端源码下载方式:公众号可回复服务端开发。

…结尾…

扫描二维码

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 游戏源码 熬玩游戏源码-游戏软件开发、游戏 https://www.wkzy.net/game/129359.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务