1,搭建场景如下图:
2,然后给Canvas上加载组件:NetworkView
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,发布选项上设置自动更新,如下图:
5,发布并且运行.exe文件,,(注意:只能有一个服务器(房主),可以运行多个客户端(加入房间的人))
运行结果图:
此示例是在一个项目在中使用的,也可以在两个项目中做,一个那样的话就有一个作为专门的服务器,一个做客户端,(即上面的客户端代码和服务器代码分开写,,,)