2016-06-23 3 views
4

Ich erstelle ein 2D-Spiel für iOS. Mein Spiel verwendet einen Host- und Client-Ansatz für ein Zwei-Spieler-Spiel im LAN. Der Host wartet auf einen Client und lädt dann die nächste Szene. Das Problem ist, dass das Laden der Szene nicht für beide Spieler synchronisiert wird. Die Szene beginnt früher als die andere. Ich möchte darauf warten, dass alle Spieler die Szene vor jeder anderen Arbeit laden.Wie Scene Laden für alle Clients mit NetworkManager synchronisieren

Mein NetworkManager hat keine Online- und Offline-Szene zugewiesen. Kein playerPrefab auch, weil es dynamisch hinzugefügt wird. Ich benutze ServerChangeScene(). Ich bin ziemlich neu in Unity und Networking, so dass jede Hilfe geschätzt wird.

public override void OnServerConnect (NetworkConnection conn) 
{ 
    base.OnServerConnect (conn); 

    print ("OnServerConnect"); 

    //not localclient(host) 
    if (client != null && client.connection != conn) { 
     ServerChangeScene ("PlayScene"); 
    } 
} 

Antwort

2

Okay, da keine Antworten, habe ich dies mit benutzerdefinierten Nachrichten behandelt. Ich habe einen Ladebildschirm erstellt, der "PlayScene" asynchron lädt und seine allowSceneActivation auf false setzt. Wenn der Client OnClientSceneChanged() aufruft, sendet er eine Nachricht an den Server, dass die Szene geladen wurde. Der Server führt eine Schleife durch alle Clients, um zu prüfen, ob alle die Szene geladen haben und antwortet, dass alle Clients jetzt für die Szenenaktivierung bereit sind.

+1

Ich dachte, das müsste die Lösung sein, aber ich hoffte auch, dass jemand anderes eine bessere Lösung hätte. –

Verwandte Themen