Jump to content
Unity Insider Forum

Unity WWWForm zu PHP


Flu

Recommended Posts

Hallo, ich habe ein Problem. Ich kann Daten von Unity zu meinem PHP Script auf dem Server Schicken und die Antwort empfangen. Mir geht es jetzt nurr um die Formatierung. Ich muss auf php seite sowas hier erzeugen. dabei kann die Anzahl der Arrays und deren Inhalte variieren.

 

$data = array(

array('2001', 60, 35, 20),

array('2002', 65, 30, 30),

array('2003', 70, 25, 40),

array('2004', 72, 20, 60),

array('2005', 75, 15, 70),

array('2006', 77, 10, 80),

array('2007', 80, 5, 90),

array('2008', 85, 4, 95),

array('2009', 90, 3, 98),

);

 

Wie sende ich die Daten aus Unity am besten, und wie mache ich daraus das oben abgebildete?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wenn es tabellarische Daten sind (so sieht es deinem Beispiel nach zu urteilen aus), wäre auch CSV eine Variante. Also eine Liste von Zeilen, und in jeder Zeile hast du eine Menge von Spalten, die durch Kommas oder auch Semikolons getrennt sind.

 

XML hat den Vorteil, dass es viel flexibler ist und es standardisierte APIs zum Erzeugen und Einlesen gibt. CSV hat bei simplen tabellarischen Daten den Vorteil, dass es so einfach ist, dass man keine API zum Erzeugen und Einlesen braucht ;-)

 

Die Datei, die du in Unity erzeugst würde dann z.B. so aussehen:

 

2001,60,35,20
2002,65,30,30
2003,70,25,40

 

... und so weiter ... das können dann relativ trivial auch mehr Zeilen und mehr Spalten sein. Theoretisch kannst du sogar mit CSV in jeder Zeile eine unterschiedliche Anzahl von Spalten haben.

 

Ah, und ich sehe gerade: In PHP gibt es sogar eine Standardfunktion, um CSV zu parsen: str_getcsv() - da weiß ich jetzt allerdings nicht, ob das auch gut mit unterschiedlicher Anzahl von Spalten pro Zeile klar kommt. PHP ist nicht so meine Welt.

 

Zum Erzeugen: Wenn du die Zeilen in Unity schon als String-Arrays hast (oder List<string>), kannst du mit String.Join() daraus sehr elegant die CSV-Zeilen erstellen. Theoretisch kannst du damit sogar die Zeilen aus einem Array erstellen (da müsstest du dann nur aufpassen, was dein Server bzw. die str_getcsv()-Methode als "NewLine" interpretiert). Ansonsten tut's auch eine verschachtelte Schleife und z.B. ein StringBuilder.

 

Etwas lästig ist, dass du den String dann mit WWWForm.AddBinaryData schicken und dazu erst in ein byte[]-Array umwandeln musst. Also musst du sicherstellen, dass du beim Erzeugen und Einlesen das gleiche Encoding verwendest. Auf C#-Seite hilft dir dann: Encoding ... auf PHP-Seite müsstest du selbst schauen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Habe das ganze nun in einen JSON String verpackt und an die PHP Datei gesendet. Allerdings fehlen mir in PHP die Kenntnisse um aus dem: {['2001', 60, 35, 20], ['2002', 60, 35, 20]} das: array( array ('2001', 60, 35, 20), array('2002', 60, 35, 20) ) zu machen. Hoffe bei diesem letzten Schritt kann mir noch jemand helfen. Dann ist mein Projekt so gut wie abgeschlossen :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

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

×
×
  • Neu erstellen...