網路方面我喜歡寫成C/S的形式,但是官方的例子是peer-to-peer形式的,把客服端和服務端寫在一起,我在看的時候就遇到了很問題。下面看看代碼吧,以C/S的形式寫的,參考官方的例子改的。
1. Server:服務端就是負責產生伺服器,代碼很簡單和聊天室的一樣。
2. Client:也很簡單,也只是串連伺服器,然後再加一個當串連伺服器成功就執行個體化一個遊戲對象的代碼。再在客服端放入一個cube的prefab預製,再給cube預製加一個NetworkView,最後再給cube預製來段運動控制移動的代碼就行了。
代買如下:
public var playerPrefab : Transform;function OnConnectedToServer(){Spawnplayer();}function Spawnplayer(){var myNewTrans : Transform = Network.Instantiate(playerPrefab, transform.position, transform.rotation, 0);}function OnPlayerDisconnected(player: NetworkPlayer) {Debug.Log("Clean up after player " + player);Network.RemoveRPCs(player);Network.DestroyPlayerObjects(player);}function OnDisconnectedFromServer(info : NetworkDisconnection) {Debug.Log("Clean up a bit after server quit");Network.RemoveRPCs(Network.player);Network.DestroyPlayerObjects(Network.player);Application.LoadLevel(Application.loadedLevel);}
3. 把伺服器開著,後面開啟兩個客服端,在兩個客服端裡分別有兩個物體(物體被重疊了,你在一個客服端移動一個物體就能看到了)
4.我發現這些天出現很多錯誤都是出自於NetworkView是否同步,還有連接埠號碼的重複。如果遇到問題,大家可以從這兩方面試試。還有就是,當用戶端強制斷開時,該用戶端再次串連伺服器時,情境中會比所有的用戶端數多一個,所以大家最好不要強制斷開,如果已經強制斷開了,那好,你把連接埠號碼重新改一下。
5.資料互動方面隨著慢慢的研究我再寫出來。大家一起進步哈~~~~QQ:397319689(有點笨)~~~