📅  最后修改于: 2023-12-03 15:35:29.958000             🧑  作者: Mango
MatchInfo
是 Unity Multiplayer 中用于保存多人游戏匹配信息的类。通过使用 MatchInfo
,程序员可以创建,加入,并查找匹配信息。
通过 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");
}
// 省略部分代码
}
通过 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");
}
// 省略部分代码
}
通过 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 官方文档。