【问题标题】:Checking internet connection at runtime in Unity在 Unity 中运行时检查互联网连接
【发布时间】:2018-08-06 03:15:20
【问题描述】:

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

似乎之前这里没有问过这样的问题,或者如果是这样,它只是检查 Start 函数中的连接。这是我到目前为止的代码:

void Update () {

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

【问题讨论】:

  • thanx 伙计,我已经在我的更新功能中使用这些链接中提供的功能,但问题是它像启动功能一样只检查一次连接,而我在统一编辑器中点击播放按钮几秒钟后,我只是将我的计算机从互联网访问中禁用,我仍然返回相同的结果。
  • 我刚刚关闭了我的 xampp,它只会导致一个愚蠢的可耻错误,无论如何不,因为我的计算机上的连接已打开,我使用 xampp 进行 db 并希望它显示第二次调试的结果。 Log("internet connection") ,但问题是当游戏被破坏并且我关闭我的互联网时仍然显示相同的结果,我该如何解决这个问题???
  • simple ->,有互联网连接,我点击播放按钮,它在日志中显示互联网连接,现在我关闭计算机的互联网连接,它仍然显示相同的东西
  • 所以,让我们考虑一下。您运行代码,它会检测到互联网在那里。然后你断开互联网,不要再次运行该功能。您如何期望它在不再次运行该功能的情况下检测断开的互联网?

标签: c# unity3d


【解决方案1】:

@mjwills 的解决方案是正确的,而且工作正常,但没有人强迫您检查游戏的每一帧的连接。您不必这样做。

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

【讨论】:

    【解决方案2】:

    您需要定期运行Update 函数。

    http://unitylore.com/articles/timers-in-unity/ 可用于此:

    using UnityEngine;
    
    public class Timer : MonoBehaviour 
    {
        public float waitTime = 1f;
    
        float timer;
    
        void Update () 
        {
            timer += Time.deltaTime;
            if (timer > waitTime) { 
                if (Application.internetReachability == NetworkReachability.NotReachable) {
                    Debug.Log ("No internet access");
                } else {
                    Debug.Log ("internet connection");
                }
                timer = 0f;
            }
        }
    }
    

    【讨论】:

      【解决方案3】:

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

      正确的方法是实施一种称为 Captive Portal Detection 的技术,这是所有主要操作系统用于其互联网状态检测的技术。如果实施得当,它甚至可以检测到网络何时受到限制(酒店或机场),因为它依赖于已知内容的 HTTP 请求。因此,它更可靠。

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多