在Unity中实现区域连线

本文介绍如何使用Unity实现区域内的客户端与服务器之间的联网操作。主要内容包括服务器注册、客户端请求主机列表、连接过程等,并提供了简洁的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在Unity中实现区域连线

服务器  MasterServer.RegisterHost("游戏类型","游戏名称","游戏注解"); 
 客戶端 MasterServer.RequestHostList("游戏类型");
 清除列表 MasterServer.ClearHostList(); 
 请求主机列表 function Awake() {MasterServer.RequestHostList("LarusTest");}
 取得列表 var d : HostData[] = MasterServer.PollHostList();

  
1
//-------------------------------------------------------------------------------服务器脚本
2
 
3
function Start(){
4
Network.InitializeServer(32,1024,! Network.HavePublicAddress());
5
MasterServer.RegisterHost("AAA","BBB","CCC");
6
print("OK");
7
}

  
01
//-------------------------------------------------------------------------------客户端脚本
02
 
03
private var s : String = "No";
04
//private var ncErr : NetworkConnectionErro;
05
function Awake(){
06
MasterServer.ClearHostList();
07
MasterServer.RequestHostList("AAA");
08
}
09
 
10
function Update () {
11
if (MasterServer.PollHostList().Length != 0) {
12
var data : HostData[] = MasterServer.PollHostList();
13
for(var e in data){
14
s = "游戏类型:" + e.gameType + "<!--DVFMTSC--> 游戏名称:" + e.gameName
15
+ " , 內部IP : " + e.ip[0] + " : " + e.port + " , 外部IP:" + e.ip[2] + " : " + e.port;
16
for(var h in e.ip){
17
print("所有IP:" + h + ":" + e.port);
18
}
19
if(e.connectedPlayers < e.playerLimit){
20
if(e.useNat){
21
print("使用NAT穿透");
22
}else{
23
print("直接连接到主机");
24
}
25
print(Network.Connect(e.ip,e.port));
26
}
27
}
28
MasterServer.ClearHostList();
29
}
30
}
31
 
32
function OnFailedToConnect(error : NetworkConnectionError ) {
33
Debug.Log ("客戶端:无法连接到服务器: "+ error);
34
}
35
 
36
function OnConnectedToServer() {
37
Debug.Log("客戶端:已<code lang="csharp">连接到服务器");
38
}
39

  
01
//--------------------------------------------------------------------------客戶端脚本(简洁的写法)
02
 
03
function Update () {
04
if (MasterServer.PollHostList().Length != 0) {
05
 for(var e in MasterServer.PollHostList()){
06
Network.Connect(e.ip,e.port);
07
}
08
MasterServer.ClearHostList();
09
}
10
}
11

服务器发布一个执行档,客户端脚本也发布一个执行档,分别在不同电脑执行
但必须是区域连线,或者是本地机器 才可看到客户端 Label 正确显示
另外 RequestHostList() 参数,必须要与 RegisterHost() 的 gameTypeName 名称一样,否则无法在不同电脑连线
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值