Unity3D制作聊天室
1、先上最终效果

2、首先创建一个C#脚本,名字自己随便取,我这里命名为chat.cs
输入一下内容:
using UnityEngine;
using System.Collections;
public 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文件,单击连接服务器,然后你就可以开始聊天了,是不是很简单?(*^__^*)