Jump to content
Unity Insider Forum

ID an Client übermitteln / ID merken


Footloose

Recommended Posts

Hallo :)

Ich habe nochmal eine kleine Frage an euch ;)
Und zwar arbeite ich ja an einem kleinen Multiplayergame.
Ziel ist es einfach zu schauen ob ich das irgendwann mit einem (oder ein paar mehr) Kumpels
zusammen zocken kann.

Dazu habe ich natürlich dann einen Server laufen.
Dazu die Clients als jeweiligen Spieler.

Nun möchte ich, um das auszuprobieren, ein Fenster für
das User-Profil machen, welches zu sehen sein soll wenn der Spieler sich einloggt (was bereits funktioniert).

59478f85b34c6_Screenshot(190).thumb.png.8259f217978af83389ed5fb9995e5626.png

Nun hat natürlich jeder Spieler, der sich registriert, eine ID zugewiesen bekommen (aktuell nur auf localhost zum testen).

Zum Beispiel hat der Spieler "foo" die ID "3".
Diese ID dient mir als Primärschlüssel, um in der Tabelle den Spieler zu indentifizieren.

Ich möchte also dann in dem Fenster weitere Tabelleninhalte auslesen, und dazu die ID nutzen, damit
auch der richtige Content ausgelesen wird.
Bei ID müsste also 3 stehen, bei Name foo usw.

Jetzt zu meinem Problem:
Das Register/LogIn-Fenster ist in einer anderen Szene.
Wenn ich nun also E-Mail und Passwort eingebe, überprüft er
die und geht bei Erfolg auf die nächste Szene, die die ihr im Bild sehen könnt.
Doch wie weiß der in der Szene bzw. in der neuen Szene dann noch, welcher Spieler er ist?
Kann ich das dann irgendwie mitgeben? Also er soll sich halt erinnern, dass er
der Spieler "Foo" mit der ID "3" ist, in dem Beispiel.


Sorry für die Anfänger-Frage.

Liebe Grüße,
Tobi ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Du könntest ein Leeres Gameobjekt nutzen, welches nur einige Public Variablen in einem Script hat, wie z.B. deine ID und den Spielername.
Dieses GO bekommt im Script dann in der Awake() oder Start() den Object Befehl DontDestroyOnLoad. Somit bleibt dieses GO bei jedem Szenenwechsel am Leben und kann jederzeit wieder genutzt werden. Natürlich musst du dieses GO jetzt manuell löschen, wenn du es nicht mehr brauchst oder wenn du z.B. in die allererste Szene zurück gehst.


Du könntest auch eine Script nutzen, in dem nur einige Static Variablen zur Verfügung gestellt werden. Dieses Script braucht keinem Objekt zugewiesen werden.
Static Variablen sind global gültig und können deswegen nur einmalig vorkommen. Sie behalten ihren Wert, bis das Spiel beendet wird oder sie eben mit neuen Werten bestückt werden. Und deswegen haut man sich schnell nen Bug ins Spiel, weil man gerne vergisst, die Variablen wieder zurück zu setzen.
Die Variablen kannst du ganz leicht über scriptname.variablenname abfragen und beschreiben. Du musst nicht erst danach suchen und eine Referenz bilden.
 

Static Variablen solltest du aber dennoch nur minimal nutzen. Für eine Datenablage, wie z.B. für ein SaveGame oder, wie in deinem Fall, für einzigartige Informationen sind sie gut.
Zum Datenaustausch, weil es so schön einfach ist, solltest du sie nicht nutzen, denn du wirst dir ruck-zuck die Variablen zur falschen Zeit überschreiben und ewig nach der Fehlerquelle suchen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also ich habe da ergänzend nochmal eine dumme Frage zu. :( 
Ich möchte (zum testen) auf zwei Endgeräten spielen.

Also 1.)
Auf einem Server hosten.

Und 2.)
Auf zwei Endgeräten einen Client starten und die dann zusammen spielen lassen.

Auf meinem Rechner laufen die verschiedenen Clients soweit und das wird auch alles
aktualisiert. Nur läuft das bisher immer noch auf meinem Localhost (habe ich bei dem NetworkManager auch so angegeben).
Das heißt ja es läuft nur Lokal auf meinem Rechner.

Aktuell nutze ich ja meinen Rechner als Server. Nur ich dachte immer bei Unity kann man auch mit wenigen CCU's einen Server
zum Testen nutzen. Nur finde ich nicht heraus wie das geht bzw. wo ich da mehr zu finde, weil ich immer nur zu der "Multiplayer"-Werbeseite
weitergeleitet werde.

Oder geht das garnicht?
Beste Grüße,
Tobi ;) 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...