📜  unity matchinfo - C# (1)

📅  最后修改于: 2023-12-03 15:35:29.958000             🧑  作者: Mango

Unity MatchInfo - C#

MatchInfo 是 Unity Multiplayer 中用于保存多人游戏匹配信息的类。通过使用 MatchInfo,程序员可以创建,加入,并查找匹配信息。

创建一个Match

通过 NetworkMatch.CreateMatch() 可以创建一个新的 Match。

using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.Networking.Match;

public class Matchmaker : MonoBehaviour
{
    // 省略部分代码
    public void CreateMatch()
    {
        matchMaker.CreateMatch(
            "MatchName",         // 匹配名称
            4,                   // 玩家数量
            true,                // 是否公开
            "",                  // 额外信息
            "",                  // 其他自定义信息
            "",                  // 其他自定义信息
            0,                   // 延迟
            0,                   // 等待超时时间
            OnMatchCreate         // 接受匹配的回调函数
        );
    }

    private void OnMatchCreate(bool success, string extendedInfo, MatchInfo matchInfo)
    {
        if (success)
        {
            Debug.Log("Match created!");
            // Use the matchInfo to connect to the matchmaker server.
        }
        else
            Debug.LogError("Create match failed");
    }
    // 省略部分代码
}
查找 Match

通过 NetworkMatch.ListMatches() 可以查找所有可用的匹配,使用 matchNameFilter 来筛选匹配名称。

using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.Networking.Match;

public class Matchmaker : MonoBehaviour
{
    // 省略部分代码
    public void FindMatches()
    {
        matchMaker.ListMatches(
            0,                   // 跳过
            10,                  // 返回多少个
            "MatchNameFilter",   // 匹配名称筛选器
            true,                // 只返回公开匹配
            0,                   // 延迟
            0,                   // 超时
            OnMatchList          // 接受匹配列表的回调函数
        );
    }

    private void OnMatchList(bool success, string extendedInfo, List<MatchInfoSnapshot> matchList)
    {
        if (success && matchList != null)
        {
            foreach (var match in matchList)
                Debug.Log(match.name);
        }
        else if (!success)
            Debug.LogError("List match failed");
    }
    // 省略部分代码
}
加入 Match

通过 NetworkMatch.JoinMatch() 可以加入一个已有的 Match。

using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.Networking.Match;

public class Matchmaker : MonoBehaviour
{
    // 省略部分代码
    public void JoinMatch(MatchInfoSnapshot match)
    {
        matchMaker.JoinMatch(
            match.networkId,     // 匹配 ID
            "",                  // 额外信息
            "",                  // 其他自定义信息
            "",                  // 其他自定义信息
            0,                   // 延迟
            0,                   // 等待超时时间
            OnMatchJoined        // 接受加入匹配的回调函数
        );
    }

    private void OnMatchJoined(bool success, string extendedInfo, MatchInfo matchInfo)
    {
        if (success)
        {
            Debug.Log("Match joined!");
            // Use the matchInfo to connect to the matchmaker server.
        }
        else
            Debug.LogError("Join match failed");
    }
    // 省略部分代码
}
更多

关于 MatchInfo 以及多人游戏的更多内容,可以参考 Unity 官方文档