close
unity 該如何判斷裝置是否有正確連上網路呢?
其實最簡單就是用個www連線,是否能連線成功就解決了
不過因該有更好更有效的方式
查了一下網路 Application.internetReachability 這個可以使用
不過呢? 我個人測試的結果是只能用來行動裝置上
用來判斷是否開起連線功能而已,例如果開啟wifi網路
實際上也沒有連線成功的話,值仍是 ReachableViaLocalAreaNetwork
所以還是得加上主動連線某個網址來判斷連線是否是正常的
也能省去一些沒開連線功能仍要做連線的IO,已結論來看是個不錯的方式。
提供 C# 腳本範例 :
using UnityEngine; using System.Collections; public class Example_Internet : MonoBehaviour { public const int NotReachable = 0; // 沒有網路 public const int ReachableViaLocalAreaNetwork = 1; // 網路Wifi,網路線。 public const int ReachableViaCarrierDataNetwork = 2; // 網路3G,4G。 // Use this for initialization void Start () { // IPhone, Android int nStatus = ConnectionStatus(); Debug.Log("ConnectionStatus : " + nStatus); if( nStatus > 0 ) Debug.Log("有連線狀態"); else Debug.Log("無連線狀態"); this.StartCoroutine(PingConnect()); } public static int ConnectionStatus () { int nStatus; if( Application.internetReachability == NetworkReachability.NotReachable ) nStatus = NotReachable; else if( Application.internetReachability == NetworkReachability.ReachableViaLocalAreaNetwork ) nStatus = ReachableViaLocalAreaNetwork; else if( Application.internetReachability == NetworkReachability.ReachableViaCarrierDataNetwork) nStatus = ReachableViaCarrierDataNetwork; else nStatus = -1; return nStatus; } IEnumerator PingConnect() { //Google IP string googleTW = "203.66.155.50"; //YahooTW IP string yahooTW = "116.214.12.74"; //Ping網站 Ping ping = new Ping(googleTW); int nTime = 0; while(!ping.isDone){ yield return new WaitForSeconds(0.1f); if(nTime > 20) // time 2 sec, OverTime { nTime = 0; Debug.Log("連線失敗 : " + ping.time); } nTime++; } yield return ping.time; Debug.Log("連線成功"); } }
歡迎光臨 ~ Eg 程式筆記的天堂
當你看完此篇文章,如果你覺得文章不錯
可以留下鼓勵的留言~
將是我的撰寫更多相關文章的動力
文章標籤
全站熱搜