CS制作之局域网(笔记)
CS需要在同一IP才能互相发送数据
using UnityEngine;
using System.Collections;
public class NetwoekMgr : MonoBehaviour {
//连接IP
private const string ip = "192.168.1.22";
//连接Port
private const int port = 134;
//是否使用NET功能
private bool _useNat = false;
//Playe预设
public GameObject player;
void OnGUI()
{
//判断当前玩家是否连接网络
if (Network.peerType == NetworkPeerType.Disconnected)
{
//生成启动游戏服务器按钮
if (GUI.Button(new Rect(20, 20, 200, 25), "Start Server"))
{ //生成启动游戏服务器;InitializeServer(连接数,端口号,是否使用NAT)
Network.InitializeServer(20, port, _useNat);
}
//生成连接游戏的按钮
if (GUI.Button(new Rect(20, 50, 200, 25), "Connect to Server"))
{
//连接游戏服务器;Connect(连接IP,连接端口号)
Network.Connect(ip, port);
}
}
else
{
//初始化服务器时输出信息
if (Network.peerType == NetworkPeerType.Server)
{
GUI.Label(new Rect(20, 20, 200, 25), "Initialization Server...");
GUI.Label(new Rect(20, 50, 200, 25), "Client Count" + Network.connections.Length.ToString());
}
//以客服端身份连接时输出信息
if (Network.peerType == NetworkPeerType.Client)
{
GUI.Label(new Rect(20, 20, 200, 25), "Connected to Server");
}
}
}
//游戏服务器初始化正常时创建Player
void OnServerInitialized()
{
CreatePlayer();
}
//有玩家连接游戏服务器时调用
void OnConnectedToServer()
{
CreatePlayer();
}
//有玩家的函数
void CreatePlayer()
{
//随机生成玩家的初始位置
Vector3 pos = new Vector3(Random.Range(-20.0f, 20.0f), 0.0f, Random.Range(-20.0f, 20.0f));
//网络上动态生成玩家
Network.Instantiate(player, pos, Quaternion.identity, 0);
}
}