上一篇文章(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的簡單搭建