这几天做了一个CS的游戏,在这个游戏里,我用到了NetWork来创建服务器和客服端,和实现服务器和客服端的连接,下面是代码:
using UnityEngine;
using System.Collections;
public class MyNetwork : MonoBehaviour {
public int connections=10; //人数
public int listenPort=8899; //端口
public bool useNat=false;
public string IP="127.0.0.1"; //IP地址
public GameObject playerPrefab;
void OnGUI()
{
if (Network.peerType == NetworkPeerType.Disconnected) {
if (GUILayout.Button ("创建服务器")) {
//创建服务器的操作
NetworkConnectionError error = Network.InitializeServer (connections, listenPort, useNat);
print (error);
}
if (GUILayout.Button ("连接服务器")) {
NetworkConnectionError error=Network.Connect(IP,listenPort);
print(error);
}
} else if (Network.peerType == NetworkPeerType.Server)
{
GUILayout.Label("服务器创建完成");
}
else if(Network.peerType==NetworkPeerType.Client)
{
GUILayout.Label("客服端已经接入");
}
}
//服务器初始化
//这2个方法都是在服务器端调用的
void OnServerInitialized()
{
print("server初始化成功");
int group= int.Parse(Network.player+"");//直接访问Network.player会得到当前客服端的索引值是唯一的
//Network.player;//访问到当前的player客服端
Network.Instantiate(playerPrefab, new Vector3(0,10,0),Quaternion.identity,group);
}
//玩家连接服务器
void OnPlayerConnected(NetworkPlayer player)
{
print("一个客服端连接过来了,Index Number:" +player);
}
//客服端
void OnConnectedToServer()
{
print("我成功连接了服务器");
int group= int.Parse(Network.player+"");//直接访问Network.player会得到当前客服端的索引值是唯一的
//Network.player;//访问到当前的player客服端
Network.Instantiate(playerPrefab, new Vector3(0,10,0),Quaternion.identity,group);
}
//network view 组件用来局域网之内去同步一个游戏物体的组件属性
//network view 会把创建出来它的客服端作为主人就是主客服端 其他客服端都会以主客服端为主
}
这里需要注意的是:你要实现数据同步的对象身上必须要绑定一个network view 组件
转载于:https://blog.51cto.com/5152481/1604108