在Unity中检查运行时的Internet连接

时间:2017-08-12 06:40:28

标签: c# unity3d

如何统一检查更新功能内的互联网连接?我想知道用户是否已连接,并且基于此仅禁用我游戏的某些功能。

似乎之前没有问过像这样的问题,或者如果是,它只是检查启动功能中的连接。这是我到目前为止的代码:

void Update () {

    if (Application.internetReachability == NetworkReachability.NotReachable) {
        Debug.Log ("No internet access");
    } else {
        Debug.Log ("internet connection");
    }
}

2 个答案:

答案 0 :(得分:2)

@mjwills解决方案是对的,它运行正常,但没有人强迫您检查游戏的每一帧的连接。你不必这样做。

更好的解决方案是在单击按钮或场景中发生事件时检查连接。

答案 1 :(得分:2)

Unity的Application.internetReachability并不是用于Internet检测的最佳解决方案,因为它不是为此目的而设计的(如文档中所述)。

正确的方法是实施一种称为“强制门户检测”的技术,这是所有主要OS对其互联网状态检测所使用的技术。如果实施正确,它甚至可以检测网络何时受到限制(酒店或机场),因为它依赖于已知内容的HTTP请求。因此,它要可靠得多。

实现起来并不难。您需要向已知的“检查页面”发出HTTP请求,并检查是否返回了正确的内容。

但是,如果您想要一个完整的,随时可用的解决方案,则可以检查我为此目的创建的资产Eazy NetChecker。它还具有事件和自定义编辑器。它不是免费的,但超级便宜!