前段時間測試的時候發現手機網絡發生變化時會與服務器的連接斷開,前後端都有心跳機制,會檢測到掉線,但是如果心跳過長的話掉線兩邊都不知道了就,所以我們要實時監控客戶端的網絡狀態,一旦用戶切換網絡,就自動爲用戶重連服務器,我先吧腳本放在下面,獲取各種網絡狀態的方法:
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class Intel : MonoBehaviour {
public Text ShowState;
int Network = 0;
public GameObject Tips;
void Start()
{
//開始檢測網絡
StartCoroutine("Refresh");
}
IEnumerator Refresh()
{
int ShowNum=0;
while (true)
{
yield return new WaitForSeconds(1);
//無網絡時
if (Application.internetReachability == NetworkReachability.NotReachable)
{
Network = 0;
ShowState.text = "當前沒有網絡";
Debug.Log("當前沒有網絡");
}
//WiFi網絡時
if (Application.internetReachability == NetworkReachability.ReachableViaLocalAreaNetwork)
{
Network = 1;
ShowState.text = "當前是WiFi網絡";
Debug.Log("當前是WiFi網絡");
}
//手機流量時
if (Application.internetReachability == NetworkReachability.ReachableViaCarrierDataNetwork)
{
Network = 2;
ShowState.text = "當前手機網絡";
Debug.Log("當前是手機網絡");
}
if (Network != ShowNum)
{
ShowNum = Network;
Tips.SetActive(true);
}
}
}
public void Close()
{
Tips.SetActive(false);
}
}
我沒有寫在Update裏面,因爲考慮到Update裏面可能會比較消耗性能,在一個說Update裏面刷新速度較快,不適合做這個方法,腳本寫完就可以基本達到實時檢測用戶網絡狀態,1秒的間隔,當然可以吧這個間隔調的大一點,按個人喜好吧,當然這裏面還會有坑,你仔細研究下就會發現,這裏我不再提。
腳本寫完GoodLuck!