游戏画质控制的时候要对当前网络进行测试,如果无线网络则使用高画质,否则使用基础画质。这里用到两个Unity的API:一个是Application.internetReachability,用来获取当前网络类型。但是这里只是判断出来当前设备的网络环境,并不代表能连接到互联网上,是否能连接到互联网上需要通过下面的ping去操作!
使用方法如下:if (NetWorkTxt != null)
{
if(Application.internetReachability == NetworkReachability.NotReachable)
NetWorkTxt.text = "当前网络:不可用";
else if (Application.internetReachability == NetworkReachability.ReachableViaCarrierDataNetwork)
NetWorkTxt.text = "当前网络:3G/4G";
else if (Application.internetReachability == NetworkReachability.ReachableViaLocalAreaNetwork)
NetWorkTxt.text = "当前网络 : WIFI";
}
另一个是Ping这个类,但是这里用ping有个好处,就是你自己可以控制网络请求中断间隔时间,这里我使用2秒来作为检测时间,超过2秒就认为服务器无法访问! 直接使用www去做也是可以的,www默认的时间太长了,对游戏体验有影响。
使用方法如下:
C#
private void CheckResServerNetWorkReady()
{
StopCoroutine(PingConnect());
StartCoroutine(PingConnect());
}
IEnumerator PingConnect()
{
m_PingResServerState = PingState.PingIng;
//ResServer IP
string ResServerIP = GetCurrentNormalIP();
//Ping服务器
Ping ping = new Ping(ResServerIP);
int nTime = 0;
while (!ping.isDone)
{
yield return new WaitForSeconds(0.1f);
if (nTime > 20) //2秒
{
nTime = 0;
Debug.Log("连接失败 : " + ping.time);
m_PingResServerState = PingState.CanNotConnectServer;
yield break;
}
nTime++;
}
if(ping.isDone)
{
yield return ping.time;
m_PingResServerState = PingState.PingOK;
Debug.Log("连接成功");
}
}