Unity3D制作聊天室
1、先上最终效果
2、首先创建一个C拭貉强跳#脚本,名字自己随便取,我这里命名为chat.cs输入一下内容:using UnityEngine;using System.Collections;pu芟鲠阻缒blic class Chat : MonoBehaviour { //定义远程服务器IP(这里为本地) private string ip = "127.0.0.1"; //定义服务器端口 private int port = 10001; //限制连接数量为15个用户 private int connectCount = 15; //是否启用网络地址转换器 private bool useNAT = false; //接收到的消息 private string recMes = ""; //要发送的消息 private string sendMes = ""; // Use this for initialization void Start() { } // Update is called once per frame void Update() { } void OnGUI() { switch (Network.peerType) { //服务器是否开启,没有与服务器连接时 case NetworkPeerType.Disconnected: StartCreat(); break; //启动服务器 case NetworkPeerType.Server: OnServer(); break; //启动客户端 case NetworkPeerType.Client: OnClient(); break; //尝试连接 case NetworkPeerType.Connecting: Debug.Log("连接中"); break; } } void StartCreat() { GUILayout.BeginVertical(); //新建服务器连接 if (GUILayout.Button("新建服务器")) { //初始化服务器端口,服务器创建成功后,Network.peerType变为NetworkPeerType.Server NetworkConnectionError error = Network.InitializeServer(connectCount, port, useNAT); Debug.Log(error); } //客户端是否连接服务器 if (GUILayout.Button("连接服务器")) { //连接至服务器,与服务器连接成功后,Network.peerType变为NetworkPeerType.Client NetworkConnectionError error = Network.Connect(ip, port); Debug.Log(error); } GUILayout.EndVertical(); } void OnServer() { GUILayout.Label("新建服务器成功,等待客户端连接"); ////得到的IP与端口 //string ip = Network.player.ipAddress; //int port = Network.player.port; //GUILayout.Label("IP地址:" + ip + ".\n端口号:" + port); //连接到服务器的所有客户端 int length = Network.connections.Length; //遍历所有客户端并获取IP与端口号 for (int i = 0; i < length; i++) { GUILayout.Label("连接的IP:" + Network.connections[i].ipAddress); GUILayout.Label("连接的端口:" + Network.connections[i].port); } if (GUILayout.Button("断开连接")) { //从服务器上断开连接,断开连接后,Network.peerType变为NetworkPeerType.Disconnected Network.Disconnect(); } GUILayout.TextArea(recMes); sendMes = GUILayout.TextField(sendMes); if (GUILayout.Button("发送消息")) { networkView.RPC("SendMes", RPCMode.All, Network.player + "Say:" + sendMes); } } void OnClient() { GUILayout.Label("连接成功"); if (GUILayout.Button("断开连接")) { //断开连接后,Network.peerType变为NetworkPeerType.Disconnected Network.Disconnect(); } GUILayout.TextArea(recMes); sendMes = GUILayout.TextField(sendMes); if (GUILayout.Button("发送消息")) { networkView.RPC("SendMes", RPCMode.All, Network.player + "Say:" + sendMes); } } [RPC] void SendMes(string mes) { this.recMes += "\n"; this.recMes += mes; }}
3、保存后,将脚本文件拖给Main Camera。给Main Camera添加Network View组件:
4、打开Build Settings,如下:
5、打开Build Settings后,选择Player Settings
6、在Unity3D右侧选择Run In Background(不勾选这个,服务器或者磴涡湿蟾客户端接收到消息后不会立即更新,要激活窗口后才能更新)
7、最后在Build Settings中单击Build,双击生成的.exe文件。单击新建服务器。
8、再打开一个生成的.exe文件,单击连接服务器,然后你就可以开始聊天了,是不是很简单?(*^__^*)