

peachplayer
Members-
Posts
256 -
Joined
-
Last visited
-
Days Won
2
Content Type
Profiles
Forums
Calendar
Blogs
Everything posted by peachplayer
-
endlich hats geklappt! Jetzt sieht der Output so aus:
-
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
-
...jetzt werden alle 3 Kulturen angezeigt jedoch "verschoben":
-
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; } }
-
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?
-
Könnte man ev. den ProBuilder dazu verwenden?
-
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
-
Hallo Leute Weiss jemand wie man mehrere Textfelder in einem Canvas automatisch untereinander anordnen kann mit Script-Anweisung? Gruss, peachplayer
-
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 ?>
-
danke für den tipp! Das geht dann wohl nur mit php-code? wie sieht sowas genau aus?
-
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?
-
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
-
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
-
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).
-
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()?
-
eigentlich möchte ich bloss .xml dateien von einem bestehende ordner in einen anderen ordner kopieren. Habs wie folgt probiert: 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("E:/unity projekte/xml_files", targetCachePath); FileUtil.CopyFileOrDirectory(targetCachePath, "E:/unity projekte/New Unity Project40.01 - Kopie/"); } else { Debug.Log("Datei nicht gefunden!"); } } } Jetzt kommt eine Fehlermeldung : 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 Gruss, peachplayer
-
Hallo Leute Weiss jemand wie man in unity Dateien mit der Endung ".xml" von einem Verzeichnis laden kann? Habs wie folgt probiert: public void Daten_laden() { 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])) { MyXML.SerializeToXML(files[i], "E:/unity projekte/New Unity Project40.01 - Kopie/files[i]"); } else { Debug.Log("Datei nicht gefunden!"); } } } Danach kommt folgende Fehlermeldung: Assets/Anzeige1.cs(716,21): error CS0411: The type arguments for method `MyXML.SerializeToXML<T>(System.Collections.Generic.List<T>, string)' cannot be inferred from the usage. Try specifying the type arguments explicitly Kann mir jemand helfen? Gruss, peachplayer
-
Hallo Leute, weiss jemand wie man ein responsiv GUI machen kann, so dass sich das GUI an die aktuelle Auflösung von unity anpassen kann? Geht das mit 'scale'? Gruss Peachplayer
-
Hallo Leute Weiss jemand wie man 3-D-Objekte in einer Szene richtig 'justieren' kann, sodass nachher alle Objekte in die gleiche Richtung (um die y-Achse) drehen? Einige 3-dObjekte, z.B. die grüne Scheibenegge, drehen in die falsche Richtung. void Update() { foreach (GameObject joint in hingeJoints) { if (joint.name == "Ballenpresse" | joint.name == "Wagen" | joint.name == "Scheibenegge") joint.transform.Rotate((new Vector3(0, 0, 1) * rotationSpeed * Time.deltaTime)); else joint.transform.Rotate((new Vector3(0, 1, 0) * rotationSpeed * Time.deltaTime)); } }
-
Hallo Leute Weiss jemand, wie man eine .xml-datei in einem spezifischem Ordner abspeichern kann? Gruss, peachplayer
-
Hallo Leute Ich versuche mit folgender Funktion den Wert eines Dropdown events abzufragen: public void OnMyValueChanged(Dropdown dd) { if (Maschinen_index(dd.value) != "") Maschine_gekauft = true; else Maschine_gekauft = false; } private string Maschinen_index(int Nummer) { string Maschinen = ""; string Maschinen_vorhanden = ""; int i = 0; if (liste4.Count > 0) { foreach (Inventory1 item1 in liste4) { if (item1.Maschinennamen == Feldarbeiten2[Nummer]) { Maschinen = Feldarbeiten1[Nummer]; Maschinen_vorhanden = Maschinen; MaschinenAnzeige.text += Feldarbeiten2[Nummer] + " vorhanden!" + "\n"; } else MaschinenAnzeige.text = Feldarbeiten2[Nummer] + " ist nicht vorhanden...bitte zuerst Maschine kaufen!"; break; } } return Maschinen; } Leider kommt als return Wert immer nur das 0-te Element von liste4! Kann mir jemand helfen? Gruss, Peachplayer
-
Hallo Leute Weiss jemand, wie man zufällige Ereignisse in Unity machen kann? Die Ereignisse sollten zufällig übers ganze Kalenderjahr verteilt sein. Habs wie folgt probiert: public class mytimer_class : MonoBehaviour { float cntdnw = 1.0f; public Text disvar; public Button startButton; public Button stoppButton; public DateTime dt, webString; public Text events; public string[] event_text = new string[3] { "Pilzkrankheit Weizen", "Unkraut in Mais", "Dürre" }; private void Awake() { if (Date_class.Datum.Year < 2021) { Date_class.Datum = new DateTime(2021, 01, 01); DateTime webString = dt; } dt = System.DateTime.Parse(PlayerPrefs.GetString("Stoppedtime")); webString = dt; Time.timeScale = 0.5f; } private void Start() { startButton = GameObject.Find("start_button").GetComponent<Button>(); stoppButton = GameObject.Find("stopp_button").GetComponent<Button>(); } public void Startbutton() { startButton.enabled = false; stoppButton.enabled = true; } public void Stoppbutton() { stoppButton.enabled = false; startButton.enabled = true; } public void events_handler() { if (Date_class.Datum.DayOfYear > 30) { int xcount = UnityEngine.Random.Range(0, 3); events.text = event_text[xcount]; } } void Update() { if ((startButton.enabled)) { Time.timeScale = 0.5f; cntdnw += Time.deltaTime; int xcount = UnityEngine.Random.Range(0, 3); double b = System.Math.Round(cntdnw, 2); dt = webString.AddDays(b); string dateTimeString = System.String.Format("{0:yyyy-MM-dd-hh}", dt); if ((Date_class.Datum.DayOfYear > 30) && (Date_class.Datum.Day >= 3)) { events.text = event_text[xcount]; } disvar.text = dateTimeString; } if (stoppButton.enabled) { Debug.Log("game stopped!" + dt); PlayerPrefs.SetString("Stoppedtime",dt.ToShortDateString()); Date_class.Datum = dt; } } } Gruss, peachplayer
-
hallo Leute Weiss jemand wie man statische Variablen oder statische Klassen defienieren kann, die dann für mehre Szenen gültig sind. Habs mit statischen Variablen probiert, jedoch kann ich nachher von anderen Scripts nicht mehr darauf zugreifen. also z.B. Script1: public static DateTime Datum_neu; Script2: public class Date_class { DateTime Datum; } Script3: DatumEingabe.text = Date_class.Datum.ToString(); Gruss, peachplayer
-
for (int i = 0; i < liste2.Count; i++) { liste2[i].Nummer = i; } Sorry, das müsste so aussehen für bestehende Listen. Gruss, peachplayer