Unity hat eine Netzwerkverbindungsprüffunktion Application.internetReachability
, aber ich habe es gewagt, ein natives Swift-Plug-In mit ** NWPathMonitor ** zu erstellen.
Verwenden Sie NWPathMonitor, der einfacher als Reachability ist, um den Netzwerkverbindungsstatus von iOS zu ermitteln. --Qiita Für die Verarbeitung rund um Swift habe ich hier auf den Artikel verwiesen.
UniNWPathMonitor.swift
monitor.pathUpdateHandler = { path in
if path.status == .satisfied {
// connected
self._onCallback("1")
} else {
// No connected
self._onCallback("0")
}
}
Wenn Sie über die NWPathMonitor-Instanz (Monitor) verbunden sind, wird "1" zurückgegeben, und wenn Sie nicht verbunden sind, wird "0" mit einem voreingestellten Rückruf zurückgegeben.
API_AVAILABLE(ios(12.0))
UniNWPathMonitor *_monitor;
Da diesmal iOS12 oder höher erforderlich ist, um NWPathMonitor zu verwenden, deklarieren Sie, dass iOS12 oder höher mit API_AVAILABLE
erforderlich ist.
UniNWPathMonitorBridge.mm
[_monitor setCallbackOnCallback:^(NSString * value) {
UnitySendMessage("UniNWPathMonitor", "Noti", [value UTF8String]);
}];
Legen Sie einen Rückruf für UniNWPathMonitor fest. Wenn der Rückruf zurückgegeben wird, verwenden Sie "UnitySendMessage", um die Verbindungsinformationen an die Unity-Seite zurückzugeben.
Eine Beschreibung von Objective-C ++ finden Sie in dem Artikel, den ich zuvor geschrieben habe. [Unity] Kürzeste Implementierung zum Ausführen von Swift von C # in Unity - Qiita
So wird es auf der Unity-Seite verwendet. Führen Sie einfach StartMonitor auf UniNWPathMonitor aus und legen Sie den Rückruf fest.
Sample.cs
void Start()
{
UniNWPathMonitor.StartMonitor();
UniNWPathMonitor.onChangeNetworkStatus += status =>
{
if (status == UniNWPathMonitor.NetworkStatus.satisfied)
//Anschließen
else
//Schneiden
};
}
Klicken Sie hier für das, was ich tatsächlich gemacht habe. Wifi wird ein- und ausgeschaltet und Unity erhält den Rückruf. Es scheint eine leichte Verzögerung zu geben, bis der Rückruf nach dem Umschalten an Unity zurückgegeben wird.
Wie eingangs erwähnt, ist dieses Plug-In für Buchake Unity nicht erforderlich, da ** Application.internetReachability ** vorhanden ist. * Ich habe es geschafft, weil ich es schaffen wollte.
Für mich habe ich viel gelernt, indem ich es tatsächlich gemacht habe. Ich bin froh, dass ich die Gelegenheit hatte, etwas über Swift zu lernen, das ich gerade studiere, wie zum Beispiel die Swift-Callback-Grammatik, die zum ersten Mal herauskam, und wie man iOS 12 oder höher obligatorisch macht.
Alle Quellen werden unten hochgeladen. Bitte beziehen Sie sich auf sie. https://github.com/baobao/UniNWPathMonitor
Recommended Posts