Jump to content
Unity Insider Forum

peachplayer

Members
  • Posts

    256
  • Joined

  • Last visited

  • Days Won

    2

peachplayer last won the day on January 26 2021

peachplayer had the most liked content!

Recent Profile Visitors

2,653 profile views

peachplayer's Achievements

Advanced Member

Advanced Member (3/3)

5

Reputation

  1. endlich hats geklappt! Jetzt sieht der Output so aus:
  2. danke für den tipp! Ich benütze das Graph-tool von CodeMonkey bereits in einem meiner Projekte. Leider krieg ich noch keine BarCharts als Output. Gruss, peachplayer
  3. ...jetzt werden alle 3 Kulturen angezeigt jedoch "verschoben":
  4. jetzt kommt sowas raus: using UnityEngine; using UnityEngine.UI; using System.Collections.Generic; using System; using System.Collections; using System.Xml; using System.Xml.Serialization; using System.IO; using UnityEditor; using System.Xml.Linq; using UnityEngine.SceneManagement; using UnityEngine.Networking; using System.Drawing; using System.Net; public class DrawManager : MonoBehaviour { public LineRenderer lineRenderer1, lineRenderer2,lineRenderer3; public GameObject drawingPrefab; List<DateTime> valueList = new List<DateTime>(); List<DateTime> valueList1 = new List<DateTime>(); List<int> valueList3 = new List<int>(); List<int> valueList2 = new List<int>(); string KulturenAusgabe = ""; List<Feldarbeit> liste1; void Start() { liste1 = new List<Feldarbeit>(); liste1 = MyXML.DeserializeFromXML<Feldarbeit>(".\\Feldarbeit.xml"); GameObject drawing = Instantiate(drawingPrefab); lineRenderer1 = drawing.GetComponent<LineRenderer>(); UnityEngine.Color newColor = UnityEngine.Color.red; ListeFuellen(); } private int ListeFuellen() { foreach (Feldarbeit item in liste1) { if (item.Feldarbeiten == "dreschen" | item.Feldarbeiten == "Siloballen" && item.Datum.Year == 2022) { if (item.Kultur == "Winterweizen") { DateTime now = DateTime.Now; int duration = (now.DayOfYear - item.Datum.DayOfYear); float alpha = 1.0f; Gradient gradient = new Gradient(); gradient.SetKeys( new GradientColorKey[] { new GradientColorKey(UnityEngine.Color.yellow, 0.0f), new GradientColorKey(UnityEngine.Color.yellow, 1.0f) }, new GradientAlphaKey[] { new GradientAlphaKey(alpha, 0.0f), new GradientAlphaKey(alpha, 1.0f) } ); lineRenderer1.colorGradient = gradient; Debug.Log(item.Kultur + duration); FreeDraw(duration); } if (item.Kultur == "Mais") { DateTime now = DateTime.Now; int duration = (now.DayOfYear - item.Datum.DayOfYear); float alpha = 1.0f; Gradient gradient = new Gradient(); gradient.SetKeys( new GradientColorKey[] { new GradientColorKey(UnityEngine.Color.green, 0.0f), new GradientColorKey(UnityEngine.Color.green, 1.0f) }, new GradientAlphaKey[] { new GradientAlphaKey(alpha, 0.0f), new GradientAlphaKey(alpha, 1.0f) } ); lineRenderer2.colorGradient = gradient; Debug.Log(item.Kultur + duration); FreeDraw(duration); } if (item.Kultur == "Wintergerste") { DateTime now = DateTime.Now; int duration = (now.DayOfYear - item.Datum.DayOfYear); float alpha = 1.0f; Gradient gradient = new Gradient(); gradient.SetKeys( new GradientColorKey[] { new GradientColorKey(UnityEngine.Color.red, 0.0f), new GradientColorKey(UnityEngine.Color.red, 1.0f) }, new GradientAlphaKey[] { new GradientAlphaKey(alpha, 0.0f), new GradientAlphaKey(alpha, 1.0f) } ); lineRenderer3.colorGradient = gradient; Debug.Log(item.Kultur + duration); FreeDraw(duration); } } } return 0; } void Update() { } void FreeDraw(int duration) { int offset = duration; int z = duration; z++; valueList2.Add(duration); Debug.Log("duration = " + duration); lineRenderer1.startWidth = 10.0f; lineRenderer1.endWidth = 10.0f; Vector3 startPos = new Vector3(0, offset, 0f); Vector3 mousePos = new Vector3(z + offset, 50f, 0f); lineRenderer1.SetPosition(0, startPos); lineRenderer1.SetPosition(1, mousePos); lineRenderer2.startWidth = 10.0f; lineRenderer2.endWidth = 10.0f; lineRenderer2.SetPosition(0, startPos); lineRenderer2.SetPosition(1, mousePos); lineRenderer3.SetPosition(0, startPos); lineRenderer3.SetPosition(1, mousePos); lineRenderer3.startWidth = 10.0f; lineRenderer3.endWidth = 10.0f; } }
  5. using UnityEngine; using UnityEngine.UI; using System.Collections.Generic; using System; using System.Collections; using System.Xml; using System.Xml.Serialization; using System.IO; using UnityEditor; using System.Xml.Linq; using UnityEngine.SceneManagement; using UnityEngine.Networking; public class DrawManager : MonoBehaviour { private LineRenderer lineRenderer; public GameObject drawingPrefab; List<DateTime> valueList = new List<DateTime>(); List<DateTime> valueList1 = new List<DateTime>(); List<int> valueList3 = new List<int>(); List<int> valueList2 = new List<int>(); string KulturenAusgabe = ""; List<Feldarbeit> liste1; void Start() { liste1 = new List<Feldarbeit>(); liste1 = MyXML.DeserializeFromXML<Feldarbeit>(".\\Feldarbeit.xml"); for (int i = 0; i < liste1.Count; i++) { if (liste1[i].Datum.Year == 2022) { if (liste1[i].Feldarbeiten == "säen") valueList.Add(liste1[i].Datum); KulturenAusgabe += liste1[i].Parzellenname + " " + liste1[i].Kultur + "\n"; } } for (int i = 0; i < liste1.Count; i++) { if (liste1[i].Datum.Year == 2023) { if (liste1[i].Feldarbeiten == "dreschen") valueList1.Add(liste1[i].Datum); KulturenAusgabe += liste1[i].Parzellenname + " " + liste1[i].Kultur + "\n"; } } GameObject drawing = Instantiate(drawingPrefab); lineRenderer = drawing.GetComponent<LineRenderer>(); FreeDraw(); } void Update() { } void FreeDraw() { int z = 0; foreach (DateTime item in valueList1) { z = z + 20; DateTime now = DateTime.Now; int duration = (now.DayOfYear - item.DayOfYear); valueList2.Add(duration); Debug.Log("duration = "+duration + z); lineRenderer.startWidth = 0.1f; lineRenderer.endWidth = 0.5f; Vector3 mousePos = new Vector3(duration, z, 0.1f); lineRenderer.positionCount++; lineRenderer.SetPosition(lineRenderer.positionCount - 1, mousePos); } } } sieht jetzt so aus. Es sollten eigentlich farbige Rechtecke sein. Kann mir jemand helfen?
  6. Könnte man ev. den ProBuilder dazu verwenden?
  7. Hallo Leute Weiss jemand wie man einen Fruchtfolgeplan mit unity machen kann? Habs wie folgt probiert: public void ListeFuellen() { List<DateTime> valueList = new List<DateTime>(); List<DateTime> valueList1 = new List<DateTime>(); List<int> valueList3 = new List<int>(); List<int> valueList2 = new List<int>(); string KulturenAusgabe = ""; yLabelList = new List<RectTransform>(); graphVisualObjectList = new List<IGraphVisualObject>(); IGraphVisual lineGraphVisual = new LineGraphVisual(graphContainer, dotSprite, Color.green, new Color(1, 1, 1, .5f)); IGraphVisual barChartVisual = new BarChartVisual(graphContainer, Color.white, .8f); dropdown1 = GameObject.Find("Dropdown").GetComponent<Dropdown>(); liste1 = MyXML.DeserializeFromXML<Feldarbeit>(".\\Feldarbeit.xml"); dropdown3 = GameObject.Find("Dropdown3").GetComponent<Dropdown>(); // Kultur for (int i = 0; i < liste1.Count; i++) { if (liste1[i].Datum.Year == 2023) { if (liste1[i].Feldarbeiten == "säen") valueList.Add(liste1[i].Datum); KulturenAusgabe += liste1[i].Parzellenname + " " + liste1[i].Kultur + "\n"; } } for (int i = 0; i < liste1.Count; i++) { if (liste1[i].Datum.Year == 2023) { if (liste1[i].Feldarbeiten == "dreschen") valueList1.Add(liste1[i].Datum); KulturenAusgabe += liste1[i].Parzellenname + " " + liste1[i].Kultur + "\n"; } } foreach (DateTime item in valueList1) { DateTime now = DateTime.Now; int duration = (now.DayOfYear - item.DayOfYear); valueList2.Add(duration); Debug.Log(duration); } ShowGraph(valueList2, barChartVisual, -1, (int _i) => "Parzelle" + (_i + 1), (float _f) => "Fr." + Mathf.RoundToInt(_f)); Beim Output sollten farbige Rechtecke für die entsprechenden Kulturen und Vegetationsdauer herauskommen. Leider kommt dabei nur ein einfacher Graph heraus. Gruss peachplayer
  8. Hallo Leute Weiss jemand wie man mehrere Textfelder in einem Canvas automatisch untereinander anordnen kann mit Script-Anweisung? Gruss, peachplayer
  9. Hallo Leute, weiss jemand wie man einen richtigen webrequest macht mit unity? Habs wie folgt probiert: public IEnumerator LoadData() { string loadUrl = "http://web01.petweber.ch/php/Feldkalender/parzellen_load.php"; WWW www = new WWW(loadUrl); yield return www; if (!www.isDone) { Debug.Log(www.error); } else { Debug.Log("Form upload complete!" + www.text); } webString = www.text; ParzellennameAnzeige.text = webString; Debug.Log("webstring:" + webString.Length); webString = webString.Remove(webString.Length-1); char c = '|'; string[] highscoreArray; highscoreArray = webString.Split(c); FillHighscore(highscoreArray); HighScoreAnzeigen(); ListeAnzeigen(); } Die Mysql-Verbindung funktioniert jedoch ist der webString dann 0, also ohne inhalt. Kann mir jemand helfen? Die php-Abfrage sieht so aus: $conn = new mysqli($dbhost, $dbuser, $dbpass, $dbname) or die("Connect failed: %s\n". $conn -> error); echo "Connected Successfully"; $retval = mysqli_select_db( $conn, 'h159848_hofverkauf-weber' ); if(! $retval ) { die('Could not select database: ' . mysql_error($conn)); } echo "Database $dbname selected successfully\n"; // Create connection // Check connection // mySQL-Abfrage: $abfrage = "SELECT * FROM Parzelle "; $ergebnis = mysqli_query($abfrage); // Anzahl der Datensätze und Anzahl der Datenfelder bestimmen: $anzahl_datensaetze = mysqli_num_rows($ergebnis); $anzahl_felder = mysqli_num_fields($ergebnis); // Tabelle beginnen echo "<table border = '1'>"; // Erste Zeile echo "<tr>"; // Schleife 1: Für jedes Feld wird eine th-Zelle erzeugt und der Name eingesetzt: for ($n = 0; $n < $anzahl_felder; $n++) { $feldname = mysqli_field_name($ergebnis, $n); echo "<th>" . $feldname . "</th>\n"; } echo "</tr>"; // Schleife 2: Für jeden Datensatz wird ein foreach durchgeführt: while ($datensatz = mysqli_fetch_assoc($ergebnis)) { echo "<tr>"; // Schleife 2-1: Für jeden Wert des Arrays wird eine Zelle erzeugt und der Wert des Arrays ausgegeben: foreach ($datensatz as $key => $value) { echo "<td>" . $value . "</td>\n"; } echo "</tr>\n"; } echo "</table>"; mysqli --xml -u $dbuser -p $dbname table_name > parzelle.xml mysqli_close($link); // Verbindung zur Datenbank beenden ?>
  10. danke für den tipp! Das geht dann wohl nur mit php-code? wie sieht sowas genau aus?
  11. leider geht das nicht richtig. Habs wie folgt probiert: public IEnumerator SaveData(string Flurname, float Fläche, string Kultur, string Datum, float Ertrag, int Nummer) { string saveUrl = "http://web01.petweber.ch/Parzelle.xml"; WWWForm form = new WWWForm(); form.AddField("Parzellenname", Flurname); form.AddField("Flaeche", Fläche.ToString()); form.AddField("Ertrag", Ertrag.ToString()); form.AddField("Kultur", Kultur); form.AddField("Datum", Datum); form.AddField("Nummer", Nummer.ToString()); Debug.Log(Flurname + Fläche + Kultur); UnityWebRequest www = UnityWebRequest.Post("http://web01.petweber.ch/Parzelle.xml", form); yield return www.SendWebRequest(); if (www.isNetworkError || www.isHttpError) { Debug.Log(www.error); } else { Debug.Log("Form upload complete!"); } } Danach muss ich die Firewall des Servers ausschalten, damit kein Http-error kommt und es wird trotzdem nicht gespeichert. Woran liegt das?
  12. das laden von xml-dateien von einer website habe ich hingekriegt, jetzt sollte ich die daten aber auch noch speichern können. Geht das auch mit der WWW-Klasse? Gruss peachplayer
  13. Hallo Leute Weiss jemand, wie man xml-dateien von einem eigenen webserver laden kann. Habs mit einem webrequest versucht, jedoch geht das nicht, d.h. es kommt ein Http-error Fehlermeldung. Ich verwende folgenden xml-Parser: public class MyXML { static public List<T> DeserializeFromXML<T>(string path) { XmlSerializer deserializer = new XmlSerializer(typeof(List<T>)); TextReader textReader = new StreamReader(path); List<T> list; list = (List<T>)deserializer.Deserialize(textReader); textReader.Close(); return (List<T>)list; } Dieser funktioniert jedoch nur mit lokalen Dateien. Von einem webserver kann ich keine daten laden. Geht das nur via php und mysql? Gruss, peachplayer
  14. public void kopieren() { string sourcePath = "E:/unity projekte/xml_files"; string targetPath = "E:/unity projekte/New Unity Project40.01 - Kopie/"; if (System.IO.Directory.Exists(sourcePath)) { string[] files = System.IO.Directory.GetFiles(sourcePath); // Copy the files and overwrite destination files if they already exist. foreach (string s in files) { // Use static Path methods to extract only the file name from the path. var fileName = System.IO.Path.GetFileName(s); var destFile = System.IO.Path.Combine(targetPath, fileName); System.IO.File.Copy(s, destFile, true); } } else { Console.WriteLine("Source path does not exist!"); } } es geht leider nur so (siehe oben).
  15. public void kopieren() { string[] files = Directory.GetFiles("E:/unity projekte/xml_files/", "*.xml", SearchOption.AllDirectories); for (int i = 0; i < files.Length; i++) { if (File.Exists(files[i])) { string targetCachePath = @"E:/unity projekte/New Unity Project40.01 - Kopie/xml"; if (System.IO.Directory.Exists(targetCachePath)) { FileUtil.DeleteFileOrDirectory(targetCachePath); } FileUtil.CopyFileOrDirectory(targetCachePath, "E:/unity projekte/New Unity Project40.01 - Kopie/"); } else { Debug.Log("Datei nicht gefunden!"); } } } IOException: Failed to Copy File / Directory from 'E:/unity projekte/New Unity Project40.01 - Kopie/xml' to 'E:/unity projekte/New Unity Project40.01 - Kopie/': destination path already exists. ...kommt immer noch dieselbe Fehlermeldung! Kann man nicht in ein bestehendes Verzeichnis kopieren mit dem befehl FileUti.CopyFileOrDirectory()?
×
×
  • Create New...