使用Network实现简易聊天室

1,搭建场景如下图:
1

2,然后给Canvas上加载组件:NetworkView
2
3,然后编写如下脚本:

using UnityEngine;
using UnityEngine.UI;

/// <summary>
/// 客户端
/// </summary>
public class NetworkDemo : MonoBehaviour {


    public Text Count;              //连接信息
    public int connections = 5;     //连接数
    public int Port = 4444;         //端口号

    public string SeverIp = "localhost";

    // Use this for initialization
    void Start() {

    }    

    void OnGUI () {

        if (GUI.Button(new Rect(10, 0, 100, 20),"创建服务器"))
        {
            NetworkConnectionError nc = Network.InitializeServer(connections, Port,false);
            if (nc == NetworkConnectionError.NoError)
            {
                Debug.Log("服务器创建成功");
                Count.text += "服务器创建成功\n";
            }
        }      

    }

    //客户端连接服务器在客户端调用
    public void OnConnectedToServer()
    {
        Debug.Log("房间创建成功成功"+Network.player.ipAddress);
        Count.text += "房间创建成功成功" + Network.player.ipAddress;

    }

    //客户端退出时调用
    public void OnDisconnectedFromServer(NetworkDisconnection info)
    {
        Debug.Log("房间被房主解散"+Network.player.ipAddress);
        Count.text += "房间被房主解散" + Network.player.ipAddress;
    }

}
using UnityEngine;
using UnityEngine.UI;

/// <summary>
/// 服务器
/// </summary>
public class Connclient : MonoBehaviour
{
    public Text Count;              //连接信息
    public int connections = 5;     //连接数
    public int Port = 4444;         //端口号,一定与客户端一致

    public string SeverIp = "localhost";

    // Update is called once per frame
    void OnGUI()
    {
        if (GUI.Button(new Rect(10, 50, 100, 20), "链接服务器"))
        {
            NetworkConnectionError nc = Network.Connect(SeverIp, Port);
            if (nc == NetworkConnectionError.NoError)
            {
                Debug.Log("链接服务器成功");
                Count.text += "链接服务器成功\n";
            }
        }
    }

    //当玩家链接到服务端,在服务端调用
    void OnPlayerConnected(NetworkPlayer player)
    {
        Count.text += "当前连接数量:" + Network.connections.Length + "\n";
        Count.text += "当前连接玩家Ip" + player.ipAddress;
    }

    //当玩家断开的时候,服务端调用
    void OnPlayerDisconnected(NetworkPlayer player)
    {
        Count.text = "当前连接数量:" + Network.connections.Length + "\n";
        Count.text += "当前断开玩家Ip" + player.ipAddress;
    } 
}
using UnityEngine;
using UnityEngine.UI;

/// <summary>
/// 聊天信息管理类
/// </summary>
public class CharText : MonoBehaviour {

    public InputField InputFile;    //输入内容
    public Text Char;               //聊天记录
    public Button btn;              //发送按钮

    public NetworkView nerworkview;
    void Start () {
        //为按钮注册事件
        btn.onClick.AddListener(QQChar);
    }

    //聊天方法
    void QQChar()
    {   
        nerworkview.RPC("SendMeg", RPCMode.All, InputFile.text);
        InputFile.text = "";
    }

    [RPC]
     public void SendMeg(string str)
    {
        Char.text += str + "\n";
    }

}

4,发布选项上设置自动更新,如下图:
4
5,发布并且运行.exe文件,,(注意:只能有一个服务器(房主),可以运行多个客户端(加入房间的人))
运行结果图:
5


此示例是在一个项目在中使用的,也可以在两个项目中做,一个那样的话就有一个作为专门的服务器,一个做客户端,(即上面的客户端代码和服务器代码分开写,,,)

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈言必行

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值