質問: "ネットワークに接続されているよ!"; } もしくは switch (Application.internetReachability) { case NetworkReachability.NotReachable: Debug.Log("接続されてないよ"); break; case NetworkReachability.ReachableViaCarrierDataNetwork: Debug.Log("キャリアネットワークで接続してるよ"); break; case NetworkReachability.ReachableViaLocalAreaNetwork: Debug.Log("Wifiかケーブルで接続してるよ"); break; } ### 試したこと Unityのバージョンの問題化と思い ・5.6.4 ・2017.3.1 ・最新版2018.3 でそれぞれ試してみましたが結果は同じでした。 ### 補足情報(FW/ツールのバージョンなど) 使用環境は Windows8.1 です。
回答: おそらくPCだと「`NetworkReachability.ReachableViaLocalAreaNetwork`」が返ってくるかと思います。 `internetReachability` などと言ってますが、これは実際に接続しているかどうかをきちんと確認しているわけではないそうです。あくまでモバイル端末の接続のための状況(端末側の設定)を見ているだけのようです。 下記の通りドキュメントに記載されています。 > > Note: Do not use this property to determine the actual connectivity. E.g. the device can be connected to a hot spot, but not have the actual route to the network. Non-handhelds are considered to always be capable of NetworkReachability.ReachableViaLocalAreaNetwork. > > > 実際の接続性の確認のためこのプロパティを利用しないでください。 非モバイル機器の場合は常に`NetworkReachability.ReachableViaLocalAreaNetwork`が返ってきます。 Unityドキュメント: Application.internetReachability 別のアプローチとしてバックグラウンドでURLにアクセスさせてその結果から接続状況を得るという方法ができるそうです。マニュアルだけ見て書いたのでお好みの動作をするかはわかりませんが、とりあえず裏でhttp://google.comにリクエストを出してその結果をチェックする感じのようです。 ``` IEnumerator CheckInternetAccess() { UnityWebRequest request = new UnityWebRequest("http://google.com"); yield return request.SendWebRequest(); if (request.isNetworkError) { Debug.Log(request.error); } else { Debug.Log("Access Done"); } } ```