您的位置:首页 > 移动开发 > Unity3D

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

2012-04-07 17:24 197 查看
      网络方面我喜欢写成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(有点笨)~~~

   
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息