有些程序要求必须联网才可以运行。
如何在unity中进行检测当前运行程序的环境是否连接到网络?
新建一个场景,先在log里来显示内容。
将脚本ChinarWeb挂载到相机上。
下面是脚本内容:
using UnityEngine;
using System.Net.NetworkInformation;
using System.Runtime.InteropServices;
using Ping = System.Net.NetworkInformation.Ping;
/// <summary>
/// 简化
/// 封装函数 —— 检测本地网络链接状态
/// </summary>
public class ChinarWeb : MonoBehaviour
{
[DllImport("winInet.dll")] //引用外部库
private static extern bool InternetGetConnectedState(ref int dwFlag, int dwReserved); //库中函数
public static bool getnetsuccess;//获取网络连接状态
void Start()
{
//放入一个可以访问的网址
ChinarPing("https://mail.qq.com/cgi-bin/frame_html?sid=k4TYjM0LzgSSLBt5&r=9fef6941cc5387a2183ad813fa36a8ef&lang=zh");
}
void Update()
{
IsConnectedInternet();
}
/// <summary>
/// 判断本地的连接状态
/// </summary>
private static bool IsConnectedInternet()
{
int dwFlag = new int();
if (!InternetGetConnectedState(ref dwFlag, 0))
{
PrintR("当前没有联网,请您先联网后再进行操作!");
if ((dwFlag & 0x14) == 0) return false;
Debug.LogWarning("本地系统处于脱机模式。");
return false;
}
else
{
if ((dwFlag & 0x01) != 0)
{
Print("调制解调器上网。");
return true;
}
else if ((dwFlag & 0x02) != 0)
{
Print("网卡上网。");
return true;
}
else if ((dwFlag & 0x04) != 0)
{
Print("代理服务器上网。");
return true;
}
else if ((dwFlag & 0x40) != 0)
{
Print("虽然可以联网,但可能链接也可能不连接。");
return true;
}
}
return false;
}
/// <summary>
/// Chinar 闪亮输出
/// </summary>
public static void Print(string str)
{
getnetsuccess = true;
Debug.Log("可以上网,上网类型输出:" + str);
}
/// <summary>
/// Chinar 警告输出
/// </summary>
public static void PrintR(string str)
{
getnetsuccess = false;
Debug.Log("不可上网的警告输出" + str);
}
/// <summary>
/// Ping命令检测网络是否畅通
/// </summary>
/// <param name="url">URL地址</param>
/// <returns>是否ping通</returns>
public static bool ChinarPing(string url)
{
bool isSucceed = true;
Ping ping = new Ping();
try
{
var pingReply = ping.Send(url);
if (pingReply != null && pingReply.Status != IPStatus.Success)
{
isSucceed = false;
}
if (pingReply != null) print("Ping 网址:<" + url + ">------状态:" + pingReply.Status);
}
catch
{
isSucceed = false;
}
return isSucceed;
}
}
运行后,可以通过log来看网络情况:
标签:return,检测,Ping,dwFlag,unity,static,false,联网,true From: https://blog.51cto.com/u_8378185/7940647