unity3d实现玩家上线另一个玩家也能看见 .

 网络方面我喜欢写成C/S的形式,但是官方的例子是peer-to-peer形式的,把客服端和服务端写在一起,我在看候就遇到了很问题。下面看看代码吧,以C/S的形式写的,参考官方的例子改的。

    1. Server:服务端就是负责生成服务器,代码很简单和聊天室的一样。

    2.  Client:也很简单,也只是连接服务器,然后再加一个当连接服务器成功就实例化一个游戏对象的代码。再在客服端放入一个cube的prefab预制,再给cube预制加一个NetworkView,最后再给cube预制来段运动控制移动的代码就行了。

代买如下:

  1. <SPAN style="COLOR: #333333; FONT-SIZE: 10px">public var playerPrefab : Transform;  
  2.   
  3. function OnConnectedToServer(){  
  4.   
  5.     Spawnplayer();  
  6.   
  7. }  
  8.   
  9.   
  10.   
  11. function Spawnplayer(){   
  12.   
  13.     var myNewTrans : Transform = Network.Instantiate(playerPrefab, transform.position, transform.rotation, 0);  
  14.   
  15. }  
  16.   
  17.   
  18.   
  19. function OnPlayerDisconnected(player: NetworkPlayer) {  
  20.   
  21.     Debug.Log("Clean up after player " + player);  
  22.   
  23.     Network.RemoveRPCs(player);  
  24.   
  25.     Network.DestroyPlayerObjects(player);  
  26.   
  27. }  
  28.   
  29.   
  30.   
  31. function OnDisconnectedFromServer(info : NetworkDisconnection) {  
  32.   
  33.     Debug.Log("Clean up a bit after server quit");  
  34.   
  35.     Network.RemoveRPCs(Network.player);  
  36.   
  37.     Network.DestroyPlayerObjects(Network.player);  
  38.   
  39.     Application.LoadLevel(Application.loadedLevel);  
  40.   
  41. }</SPAN>  
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(有点笨)~~~

 

posted @ 2013-03-23 14:21  小薇林  阅读(718)  评论(0编辑  收藏  举报