決定在價格上通過Unity通過Photon進行聯網(如果有更好的聯網方式讓我知道)我一直在嘗試創建一個簡單的團結媒人,當用戶進入遊戲時,他們首先尋找任何其他匹配(AKA房間/遊戲),如果有一個他們加入它,如果沒有他們創建一個。然而,我很難找到一個關於如何使用團結媒人的明確解釋,所以我可以開發代碼來獲得我期望的行爲,這似乎更加棘手,因爲在最近的更新中,團結正在改變它的網絡系統,所以我相信任何事情之前5.4目前已過期。我發現的唯一有用的東西是this示例代碼,但我想更多地瞭解該系統,因此我不會錯過任何重要概念,這可能是我的初學者 - 很好。尋找關於團結媒人(5.4)以及如何在腳本中使用的基本解釋
因此,我今天要問你的是,你能指導我清楚地解釋與當前統一性相關的配對系統(包括腳本)嗎?或者,無論如何,你可以嘗試去做更困難更費時的事情它自己,它將作爲像我這樣的其他人的未來參考。
感謝您的閱讀,當然任何答案將不勝感激。
我明白我的問題是很難回答,所以我要來測試示例代碼,直到我獲得所需的行爲和:
EDIT [我在C#中工作]發佈任何我無法解決的錯誤。
問題1
- 我抄確切的代碼(下面包括更容易引用)到我所附着到我的網絡管理器的腳本。但我得到的錯誤是由於保護級別 -
我對如何解決這一兩個理論 -
- 更改方法存取
- 沒有獲得來自monobehaviour腳本
我目前正在測試它們,關於如何解決這個問題的任何建議s會非常有用。我想知道我是否應該將這一點報告給團結,對於我來說這似乎是統一文檔中的一個錯誤示例,它說它已更新爲5.4。謝謝。
問題2
我創造了這個腳本,並在連接到同一個網絡管理員的空遊戲物體在編輯器中運行它,我沒有得到任何編譯器錯誤,但是當我運行調試「ERROR:匹配搜索失敗」,這意味着listmatches funtion是不成功的,我的腳本如下 -
using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.Networking.Match;
using UnityEngine.Networking.Types;
using System.Collections;
using System.Collections.Generic;
public class MyMatchMaker : MonoBehaviour {
bool done;
// Use this for initialization
void Start() {
NetworkManager.singleton.StartMatchMaker();
NetworkManager.singleton.matchMaker.ListMatches(0, 20, "Match", false, 0, 1, OnMatchList);
Debug.Log("Searching");
}
public virtual void OnMatchList(bool success, string extendedInfo, List<MatchInfoSnapshot> matchList)
{
if (success)
{
if (matchList.Count != 0)
{
Debug.Log("Matches Found");
NetworkManager.singleton.matchMaker.JoinMatch(matchList[0].networkId, "", "", "", 0, 1, OnMatchJoined);
}
else
{
Debug.Log("No Matches Found");
Debug.Log("Creating Match");
NetworkManager.singleton.matchMaker.CreateMatch("Match", 2, true, "", "", "", 0, 1, OnMatchCreate);
}
}
else
{
Debug.Log("ERROR : Match Search Failure");
}
}
public virtual void OnMatchJoined(bool success, string extendedInfo, MatchInfo matchInfo)
{
if (success)
{
Debug.Log("Match Joined");
MatchInfo hostInfo = matchInfo;
NetworkManager.singleton.StartClient(hostInfo);
OnConnect();
}
else
{
Debug.Log("ERROR : Match Join Failure");
}
}
public virtual void OnMatchCreate(bool success, string extendedInfo, MatchInfo matchInfo)
{
if (success)
{
Debug.Log("Match Created");
MatchInfo hostInfo = matchInfo;
NetworkServer.Listen(hostInfo, 9000);
NetworkManager.singleton.StartHost(hostInfo);
OnConnect();
}
else
{
Debug.Log("ERROR : Match Create Failure");
}
}
void OnConnect()
{
if (Network.isServer)
{
Debug.Log("You are Server");
}
else if (Network.isClient)
{
Debug.Log("You are Client");
}
else
{
Debug.Log("ERROR : MatchMaking Failed, Peer type is neither Client nor Server");
}
}
}
謝謝,希望你也能看到我已經錯了。
@Programmer
我使用統一網絡「統一了光子」,「團結紅娘」 @MarcGuiselin –
@MarcGuiselin其實你有這種落後。 Photon取代了Unity的舊網絡系統。 Unity隨後發佈了他們的新網絡系統uNet。它有媒人,並沒有理由使用光子 – Programmer
嗨@Programmer很高興再次見到你。自從我們上次的遭遇以來,我發現uNet端口轉發很困難,所以嘗試了光子,並且開始了一個遊戲的工作,但是在查看價格之後,我轉回到了Unity,但我很努力地瞭解上面的配對。 –