注意:已弃用 UNet,未来会将其从 Unity 中删除。一个新系统正在开发中。如需了解更多信息和后续步骤,请参阅此博客文章以及常见问题解答 (FAQ)。 |
将 Network Manager 与 Network Manager HUD 结合使用时,NetworkManager.StartMatchmaker 方法支持进行配对,并使用 NetworkMatch 对象来填充 NetworkManager.matchMaker 属性。在激活此属性后,Network Manager HUD 将使用此属性并调用 NetworkManager 上的方法,让您执行简单配对。
NetworkManager
上有一些虚拟函数,您可以通过从 NetworkManager
派生自己的类来自定义这些虚拟函数。然后,可以自定义新的 NetworkManager
类对 Matchmaker 回调的响应方式。
下面显示了这些回调及其默认实现。如果重写这些回调,有些方法会要求您调用基本实现,否则 Network Manager HUD 的功能将中断。例如,OnMatchCreate
的默认实现(用于启动主机)。
using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.Networking.Match;
public class CustomManager : NetworkManager {
public override void OnMatchCreate(bool success, string extendedInfo, MatchInfo matchInfo) {
if (LogFilter.logDebug) { Debug.LogFormat("NetworkManager OnMatchCreate Success:{0}, ExtendedInfo:{1}, matchInfo:{2}", success, extendedInfo, matchInfo); }
if(success)
StartHost(matchInfo);
}
public override void OnMatchJoined(bool success, string extendedInfo, MatchInfo matchInfo) {
if (LogFilter.logDebug) { Debug.LogFormat("NetworkManager OnMatchJoined Success:{0}, ExtendedInfo:{1}, matchInfo:{2}", success, extendedInfo, matchInfo); }
if(success)
StartClient(matchInfo);
}
public override void OnMatchList(bool success, string extendedInfo, List<MatchInfoSnapshot> matchList) {
if (LogFilter.logDebug) { Debug.LogFormat("NetworkManager OnMatchList Success:{0}, ExtendedInfo:{1}, matchList.Count:{2}", success, extendedInfo, matchList.Count); }
matches = matchList;
}
public override void OnDestroyMatch(bool success, string extendedInfo) {
if (LogFilter.logDebug) { Debug.LogFormat("NetworkManager OnDestroyMatch Success:{0}, ExtendedInfo:{1}", success, extendedInfo); }
}
public override void OnDropConnection(bool success, string extendedInfo) {
if (LogFilter.logDebug) { Debug.LogFormat("NetworkManager OnDestroyMatch Success:{0}, ExtendedInfo:{1}", success, extendedInfo); }
}
public override void OnSetMatchAttributes(bool success, string extendedInfo) {
if (LogFilter.logDebug) { Debug.LogFormat("NetworkManager OnDestroyMatch Success:{0}, ExtendedInfo:{1}", success, extendedInfo); }
}
}
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.