使用Network实现简易聊天室

来源:互联网 发布:淘宝联合利华有假货吗 编辑:程序博客网 时间:2024/06/05 13:21

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


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

原创粉丝点击