上一篇文章(http://www.cnblogs.com/dabaimifan/p/7212615.html)介绍了通过给物体添加NetWorking相关组件实现简单的搭建一个网络,本文通过C#代码搭建一个简单的网路,详细解释会在代码里注释,供新手学习使用
首先,引入UnityEngine下的NetWorking命名空间,并初始化相关对象,提前创建好预设体并放入Resources文件夹下,这里需要注意的是在Start里调用方法让程序保持在后台运行,不然客户端会连接不上服务器(后台),
public class NetManager : MonoBehaviour { //创建客户端 NetworkClient MyClient; //创建预设体 网络对象 GameObject playerPre; void Start () { //保持程序后台运行 Application.runInBackground = true;
playerPre = Resources.Load("Player") as GameObject; //初始化客户端 MyClient = new NetworkClient(); }
然后写 创建服务器的方法
//创建服务器的方法 public void InitServerAction() { if (!NetworkServer.active) { //创键并开启服务器,服务器开始监听 // 默认ip地址 为127.0.0.1 NetworkServer.Listen("127.0.0.1", 1345); Debug.Log("服务器已经开启"); //给服务器注册回调方法(ServerAddPlayerCallback) NetworkServer.RegisterHandler(MsgType.AddPlayer, ServerAddPlayerCallback); //将服务器也初始化 为一个客户端 MyClient = ClientScene.ConnectLocalServer(); //注册客户端连接之后的回调方法(ClientConnectServerCallback) MyClient.RegisterHandler(MsgType.Connect, ClientConnectServerCallback); } }
写服务器添加玩家后的回调方法(ServerAddPlayerCallback) 与客户端连接之后的回调方法(ClientConnectServerCallback):
//服务器接收客户端发送的添加游戏玩家之后执行的回调方法 void ServerAddPlayerCallback(NetworkMessage msg) { //创建一个游戏对象 GameObject player= Instantiate(playerPre,new Vector3(0,0,0),Quaternion.identity); //将创建的网络对象的权限赋值给客户端 NetworkServer.AddPlayerForConnection(msg.conn, player,31); //将该玩家的对象卵生到所有连接服务器的客户端 NetworkServer.Spawn(player); } //客户端连接之后的回调方法 void ClientConnectServerCallback(NetworkMessage msg) { //告诉服务器准备完毕 ClientScene.Ready(msg.conn); //向服务器注册预设体(预设体必须是网络对象) ClientScene.RegisterPrefab(playerPre); //向服务器发送添加游戏对象的请求 //服务器在接收这个请求之后会自动调用 添加游戏玩家的回调方法 ClientScene.AddPlayer(31); }
再写一个客户端连接服务器的方法:
//客户端连接服务器的事件 public void ClientConnectServerAction() { //连接服务器 MyClient.Connect("127.0.0.0", 1345); //注册客户端连接之后的回调方法 MyClient.RegisterHandler(MsgType.Connect, ClientConnectServerCallback); }
最后我们用GUI添加两个Button绑定事件
private void OnGUI() { if (GUI.Button(new Rect(10, 10,100, 30), "server")) { InitServerAction(); } if (GUI.Button(new Rect(10, 50, 100, 30), "client")) { ClientConnectServerAction(); } }
效果图
运行,点击Server创建服务器
打包程序并运行,点击Client连接服务器
简单的网络搭建完毕,这里用到的都是Unity自带的封装好的NetWorking,下一篇文章分享一下Socket的简单搭建