Jump to content
Unity Insider Forum

Vermeiden von Casts


Kokujou

Recommended Posts

Hallo erstmal ^_^

Folgendes: Ich verwende als Basis das Unity Networking und um Klassen zu synchronisieren dürfen sie leider nicht generisch sein, weswegen ich Arraylisten verwenden muss. Diese enthalten ja nur Objekte vom Typ object.

Das Problem ist, ich muss jetzt jedes Mal, wenn ich auf Werte dieser Listen zugreifen will konvertieren und ich kann mir nicht vorstellen dass das sonderlich effizient ist. Meine Frage: Was tun?

Ich weiß leider nie wann Referenzen übergeben werden und wann nicht. Würden die ursprünglichen Listen auch verändert werden wenn man das Casten nur einmal macht und dann mit der erzeugten Liste weiter arbeitet? Oder ist diese Liste eine Wertkopie?

Oder gibt es alternativ vielleicht eine möglichkeit diese ArrayLists zu vermeiden? Wäre es z.B. effektiver wenn man sich selbst eine "Serialisierungsfunktion" definiert, und wenn ja wie funktioniert sowas?

ich suche nach der effizientesten Lösung.

Link zu diesem Kommentar
Auf anderen Seiten teilen

willst du damit sagen, dass man inzwischen generische Klassen übers Netzwerk senden kann?
Ich hab das letzte mal mit Networking unter Unity 4.x gearbeitet, um es zum laufen zu bringen unter 5.x musste ich haufenweise ändern, es wäre gut wenn das jetzt so wäre.

Oder warum hast du mir den Source geschickt?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi.

>> willst du damit sagen, dass man inzwischen generische Klassen übers Netzwerk senden kann?
Jaein. :-) Ich kann das, weil ich den Code entsprechend angepaßt habe. Was das spezielle Problem bei dir ist, kann ich nicht sagen, ich sehe den Code ja nicht. Mit deinem De-/Serialisierungshinweis kannst du recht haben, UNet zickt da manchmal rum; versuch einfach mal. Oder ent-generifiziere :-) deine Klassen vielleicht erst einmal nach dem Muster: "public class testword : test<word>", damit sollten einige Probleme gelöst sein.

>> Ich hab das letzte mal mit Networking unter Unity 4.x gearbeitet ...
UNet hat so gut wie nix mehr damit am Hut, es ist Klassen besser geworden. Das Problem ist, es arbeiten mehrere Gruppen unabhängig voneinander daran weiter, und die mehr oder weniger "federführende" Gruppe ist leider weder die flotteste noch die geschickteste, die haben auch kein Problem damit, ab und zu mal wieder zurückzufeaturen. :-( UNet ist kein Kind mehr, es ist gewachsen, aber nicht mal halbstark, das sollte man auch immer im Hinterkopf haben.

>> Oder warum hast du mir den Source geschickt?
Naja, wenn ein Programm nicht das macht, was ich möchte und ich seinen Sourcecode habe, passe ich den eben entsprechend an. Das ist schon alles.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Oh man... Also auch noch im Unity Source rumzupfuschen da komm ich mir nicht sehr... konfident vor :P

ich arbeite nur sehr oberflächlich mit Networking.. Das Grundproblem ist einfach nur Klassen und deren Inhalte auf beiden Spielern zu synchronisieren. Aber aus mangelnder Kompatibilität habe ich aus den Klassen structs und aus den generischen listen Arraylisten machen müssen. Reicht es denn wirklich aus wenn ich das mittels Vererbung löse?

Ich muss warscheinlich sowieso nochmal alles komplett überarbeiten. Du weißt ja wie das ist, wenn du dir mal den Code ansiehst den du vor 4 Jahren geschrieben hast und du denkst "Gott was hab ich damals fürn Mist verzapft" XD

Link zu diesem Kommentar
Auf anderen Seiten teilen

>> Oh man... Also auch noch im Unity Source rumzupfuschen da komm ich mir nicht sehr... konfident vor :P
Ist doch nur der UNet-Code, und du kommst in den Zeugenschutz. ;-)

>> Reicht es denn wirklich aus wenn ich das mittels Vererbung löse?
Probiers aus, hängt von deinem Code ab. Das ist doch das Grundprinzip, wenn du ein Programm entwirfst: ne Idee entwickeln, diese in eine Programmiersprache zwängen und testen.

>> Du weißt ja wie das ist, wenn du dir mal den Code ansiehst den du vor 4 Jahren geschrieben hast und du denkst "Gott was hab ich damals fürn Mist verzapft" XD
Nöö, hatte ich die letzten 30 Jahre nicht mehr wirklich. :P ;-)

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor einer Stunde schrieb HortusLongus:

>> Du weißt ja wie das ist, wenn du dir mal den Code ansiehst den du vor 4 Jahren geschrieben hast und du denkst "Gott was hab ich damals fürn Mist verzapft" XD

Nöö, hatte ich die letzten 30 Jahre nicht mehr wirklich. :P ;-)

Das würde ich nicht als gutes Zeichen ansehen. In den allermeisten Fällen bedeutet das nur das du dich nicht weiterentwickelt hast. Es gibt immer etwas was man noch besser machen kann.

Nur mal so als Hinweis für die Leute die das hier lesen...

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

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

×
×
  • Neu erstellen...