Jump to content
Unity Insider Forum
Sign in to follow this  
SigmaTau91

Unity Multiplayer C# - Statische Variablen Problem

Recommended Posts

Hallo Leute!
Folgendes Problem :
Ich erstelle gerade in Unity ein Multiplayer-Spiel und auf dem Spieler Prefab befindet sich ein Script, welches sich selbst bei Aufruf als statische Instanz setzt.
Jeder Spieler soll nur einen "CharakterManger" erhalten, befinden sich 2 im Spiel, wird ein Error ausgegeben.
Starte ich den Host, funktioniert alles wunderbar. Starte ich aber einen Client, erhalte ich die Meldung "Mehr als ein CharakterManger im Spiel", worauf hin für diesen keiner erstellt wird. In der Scene in Unity befinden sich natürlich auch 2 Spieler-Objekte mit jeweils einem CharakterManger Script.
Überspringe ich die Meldung, wird vermutlich der CharakterManager vom Host verwendet.

Ich bin eigentlich davon ausgegangen das die Clients untereinander ihre eigenen statischen Variablen besitzen, weswegen ich ein wenig überfragt bin, weswegen es hier zum Fehler kommt. image.png.0f3c068c20380b4eba0b5aa8d76a30ea.png

Hoffe ihr könnt mir da weiter helfen!!!

Share this post


Link to post
Share on other sites
vor 11 Stunden schrieb SigmaTau91:

Ich bin eigentlich davon ausgegangen das die Clients untereinander ihre eigenen statischen Variablen besitzen

Nope.

Die synchronisieren exakt das, was ihnen gesagt wurde, und sonst nichts. Also SyncVars und was immer du so semi-manuell hin und her schiebst, z.B. als Parameter eines Commands oder CilentRPCs.

Dein Manager-Script ist soweit eine komplett lokale Angelegenheit, da muss nichts synchronisiert werden. Du kannst in deiner Initialisierung einfach prüfen, ob isLocalPlayer für dein NetworkBehaviour auf dem Player true ist und setze den Manager nur dann als "den" Manager fest. Vorsicht: Ich meine mich zu erinnern, dass der Wert erst nach OnStartClient() und damit auch nach Awake() initialisiert wird.

Genau genommen kannst du einfach deine Singleton-Initialisierung in OnStartLocalClient() machen. Das wird nur auf dem NetworkBehaviour des Objekts aufgerufen, das dem lokalen Client gehört.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×