伺服器 | MasterServer.RegisterHost("遊戲類型","遊戲名稱","遊戲註解"); |
客戶端 | MasterServer.RequestHostList("遊戲類型"); |
清除列表 | MasterServer.ClearHostList(); |
請求主機列表 | function Awake() {MasterServer.RequestHostList("LarusTest");} |
取得列表 | var d : HostData[] = MasterServer.PollHostList(); |
//-------------------------------------------------------------------------------伺服器腳本
function Start(){
Network.InitializeServer(32,1024,! Network.HavePublicAddress());
MasterServer.RegisterHost("AAA","BBB","CCC");
print("OK");
}
//-------------------------------------------------------------------------------客戶端腳本
private var s : String = "No";
//private var ncErr : NetworkConnectionErro;
function Awake(){
MasterServer.ClearHostList();
MasterServer.RequestHostList("AAA");
}
function Update () {
if (MasterServer.PollHostList().Length != 0) {
var data : HostData[] = MasterServer.PollHostList();
for(var e in data){
s = "遊戲類型:" + e.gameType + " 遊戲名稱:" + e.gameName
+ " , 內部IP : " + e.ip[0] + " : " + e.port + " , 外部IP:" + e.ip[2] + " : " + e.port;
for(var h in e.ip){
print("所有IP:" + h + ":" + e.port);
}
if(e.connectedPlayers < e.playerLimit){
if(e.useNat){
print("使用NAT穿透");
}else{
print("直接連接到主機");
}
print(Network.Connect(e.ip,e.port));
}
}
MasterServer.ClearHostList();
}
}
function OnFailedToConnect(error : NetworkConnectionError ) {
Debug.Log ("客戶端:無法連接到伺服器: "+ error);
}
function OnConnectedToServer() {
Debug.Log("客戶端:已連接至伺服器");
}
//--------------------------------------------------------------------------客戶端腳本(簡潔的寫法)
function Update () {
if (MasterServer.PollHostList().Length != 0) {
for(var e in MasterServer.PollHostList()){
Network.Connect(e.ip,e.port);
}
MasterServer.ClearHostList();
}
}
//--------------------------------------------------------------------------
伺服器發佈一個執行檔,客戶端腳本也發佈一個執行檔,分別在不同電腦執行
但必須是區域連線,或者是本地機器 才可看到客戶端 Label 正確顯示
另外 RequestHostList() 參數,必須要與 RegisterHost() 的 gameTypeName 名稱一樣,否則無法在不同電腦連線
//--------------------------------------------------------------------------