筆者の環境:OS:Windows10, Unity 2019.3.5f1 使用言語:C#
利用Asset:DOTween,Destructible2D
筆者のプログラミング歴:2020年1月よりUnity上でC#の勉強を開始。
#ネットワークに接続しているかどうかを確認してくれる「Application.internetReachability」
初制作ゲームにて、Admob広告を掲載したのですがその際に、
『広告のLoadを待たずにゲームを開始すると、バナー広告の操作が上手くいかず、消すべき時に消せない。』
という不具合が出たので、広告のLoadが完了するまで、スタートボタンを表示させない、という無理やりな方法で
不具合を回避していました。
その為、インターネット接続していない端末はスタート出来ないので、それに対しての回避策を用意する、という更に面倒な事になっています。
今思えば、愚策中の愚策ですね。
現在開発中のゲームでもランキングを搭載予定なのもあり、ネットワーク接続しているかどうかの確認が出来れば、この問題は簡単に解決出来ると思い、調べてみました!
すぐ見つかりました(というか、一度調べてました)。
Application.internetReachabilityを使えば、ネットワーク接続しているかどうかの確認どころか、接続しているネットワークがWi-Fiなのかキャリアネットワーク(4Gとかですね)なのか?も、わかるそうです。
●NotReachable : インターネットに接続していない
●ReachableViaCarrierDataNetwork : キャリアネットワークで接続している
●ReachableViaLocalAreaNetwork : Wi-Fiでネットワークに接続している
以下、実装例。
void CheckNetwork()
{
if (Application.internetReachability == NetworkReachability.NotReachable)
{
Debug.Log("ネットワーク接続無し");
}
else if(Application.internetReachability == NetworkReachability.ReachableViaCarrierDataNetwork)
{
Debug.Log("キャリアネットワークに接続");
}
else if((Application.internetReachability == NetworkReachability.ReachableViaLocalAreaNetwork)
{
Debug.Log("Wi-Fiネットワークに接続");
}
}
実際スマホアプリで使用する場合は、ネットワーク接続が無ければ、警告を表示するとかになりますね。
今回の筆者の場合は、スタートボタンは最初から表示しておいて、ボタンを押した時に広告Loadとネットワーク接続の確認をして、それぞれ処理を行う、って感じで実装する事になると思います。
ここまで読んでいただき、ありがとうございました。
参考にさせていただいたサイト:エクスプラボ 様
https://ekulabo.com/network-reachability