Jump to content
Unity Insider Forum

peachplayer

Members
  • Gesamte Inhalte

    271
  • Benutzer seit

  • Letzter Besuch

  • Tagessiege

    3

Alle erstellten Inhalte von peachplayer

  1. hallo Leute Ich konnte das Problem inzwischen selber lösen. Der Fehler war in der Hilfsfunktion, welche gleiche Parzellennamen finden sollte. Jetzt siehts so aus... Gruss, peachplayer
  2. hallo Leute Kann mir jemand helfen? Ich möchte einen Fruchtfolgeplan machen und verwende dazu folgendes Script: if (graphData.Count > 10) { gap = 10.0f / graphData.Count; } float xIncrement = gap; Vector3 startpoint = Vector3.zero; int i = 0; while (dataCount < graphData.Count) { Vector3 endpoint = new Vector3(graphData[dataCount].income * 0.01f, xIncrement + 8f, 0.96f); startpoint = new Vector3(0, endpoint.y, 0.96f); // pointer is an empty gameObject, i made a prefab of it and attach it in the inspector GameObject p = Instantiate(pointer, new Vector3(startpoint.x, startpoint.y, 0.97f), Quaternion.identity) as GameObject; p.transform.parent = holder.transform; // i made a prefab of it and attach it in the inspector GameObject lineObj = Instantiate(linerenderer, transform.position, Quaternion.identity) as GameObject; lineObj.transform.parent = holder.transform; lineObj.name = dataCount.ToString(); LineRenderer lineRenderer = lineObj.GetComponent<LineRenderer>(); lineRenderer.material = mat; lineRenderer.SetWidth(0.15F, 0.15F); lineRenderer.SetVertexCount(2); while (p.transform.position.y < endpoint.y) { p.transform.Translate(Vector3.up * Time.deltaTime * 8, Space.World); lineRenderer.SetPosition(0, startpoint); lineRenderer.SetPosition(1, p.transform.position); } lineRenderer.SetPosition(0, startpoint); lineRenderer.SetPosition(1, endpoint); p.transform.position = endpoint; startpoint = endpoint; dataCount++; if (FindParzellenname(graphData[dataCount].Parzellenname) == null) xIncrement = 0f; else if (FindParzellenname(graphData[dataCount].Parzellenname) != null) xIncrement += gap; Leider werden die Linien bei gleichen Parzellennamen nicht fortgesetzt, sondern übereinander dargestellt. Weiss jemand weshalb? Gruss, peachplayer
  3. danke für den Tipp! Debug.Log() gibt den Datumswert 0 heraus, also stimmt eigentlich die Berechnung der Datumsdifferenz!
  4. Hallo Leute Weiss jemand wie man die Datumsdifferenz in unity berechnen kann? Habs wie folgt probiert: private float Finddifference(string Maschinennamen) { foreach (DurationUnit item in durationList1) { if (item.Kultur == FindKultur(item.Kultur, Maschinennamen)) { // int duration = item.ernten.DayOfYear - Findsäen(item.Parzellenname); TimeSpan Diff_dates = item.ernten - (Findsäen(item.Parzellenname)); var days = Convert.ToSingle(Diff_dates.Days); return days; } } return 0f; } private DateTime Findsäen(string Maschinennamen) { int i = 0; foreach (DurationUnit Inventory1Item in durationList1) { if (Inventory1Item.Parzellenname == Maschinennamen) Debug.Log(Inventory1Item.Säen); DateTime date_säen = Inventory1Item.Säen; return date_säen; i++; } return DateTime.Now; } Leider kommt ein viel zu hoher Wert heraus(738776). Gruss peachplayer
  5. Den Content Type auf decimal änderen bringt leider auch nichts.
  6. leider kommt die Fehlermeldung immer noch auch wenn ich den Punkt als Trennzeichen eingebe.
  7. Hallo Leute Weiss jemand wieso ein Inputfield nur ganzzahlige Werte annehmen kann? Bei der Eingabe von Fliesskomazahlen kommt eine Fehlermeldung(siehe unten). Gruss peachplayer Pflanzen ZufallsEintrag() { float Preis = 0.0f; Index_pfl = 0; int i = 0; int index3 = dropdown3.value; int index1 = dropdown1.value; int index2 = dropdown2.value; string Jahr_auswahl = dropdown3.options[index3].text; float Menge = 0.0f; dataXml = XElement.Load("E://unity projekte/New Unity Project40.01 - Kopie/Pflanzen.xml"); IEnumerable<XElement> data = dataXml.Elements(); foreach (XElement item in data) { string Parzellenname = dropdown1.options[index1].text; string Pflanzenschutzmittel = dropdown2.options[index2].text; string Kultur = FindKultur(Parzellenname); float Fläche = FindFläche(Parzellenname); int n; string number = MengeEingabe.text; bool result = Int32.TryParse(number, out n); if ((MengeEingabe.text == "") || (result == false)) popupMessage.Open("Texture1", "bitte einen gültigen Wert eingeben!"); Menge = float.Parse(MengeEingabe.text); int Nummer = int.Parse(item.Element("Nummer").Value); DateTime Datum1 = DateTime.Parse(item.Element("Datum").Value); float Kosten = Menge * 0.01f * Preis_berechnen(Pflanzenschutzmittel); Debug.Log(Index_pfl); if (DatumEingabe.text == "") popupMessage.Open("Texture1", "bitte ein gültiges Datum eingeben!"); //if (DatumEingabe.text == "") // Datum = System.DateTime.Now.ToString("dd.MM.yyyy"); DateTime Datum = DateTime.ParseExact(DatumEingabe.text, @"dd.MM.yyyy", System.Globalization.CultureInfo.InvariantCulture); Pflanzen neuerEintrag = new Pflanzen(); neuerEintrag.Parzellenname = Parzellenname; neuerEintrag.Nummer = Nummer; neuerEintrag.Kultur = FindKultur(Parzellenname); neuerEintrag.Pflschutzmittel = Pflanzenschutzmittel; neuerEintrag.Fläche = Fläche; neuerEintrag.Menge = Menge * Fläche * 0.01f; neuerEintrag.Datum = Datum; if (Datum1.Year == 2018 + index3) { liste.Add(neuerEintrag = new Pflanzen { Nummer = Nummer, Parzellenname = Parzellenname, Menge = Menge, Kosten = Fläche * Menge * 80.0f * 0.01f, Fläche = Fläche, Pflschutzmittel = Pflanzenschutzmittel, Kultur = Kultur, Datum = Datum }); Debug.Log("index2 = " + index1 + "i = " + i); return neuerEintrag; } i++; } return null; } Fehlermeldung: "FormatException: Input string was not in a correct format."
  8. Habs jetzt mit einem Panel versucht: ArrayList arrayList = new ArrayList(); UnityEngine.UI.Text[] allObject = (UnityEngine.UI.Text[])FindObjectsOfType(typeof(UnityEngine.UI.Text)); foreach (UnityEngine.UI.Text item in allObject) { UnityEngine.UI.Text go = item; switch (go.name) { case "Text_Flurname": arrayList.Add(go); break; case "Text_Feldarbeiten": arrayList.Add(go); break; case "Text_Kosten": arrayList.Add(go); break; case "Text_fläche": arrayList.Add(go); break; case "Text_Kultur": arrayList.Add(go); break; case "Text_Datum": arrayList.Add(go); break; case "Text_nr": arrayList.Add(go); break; } } var canvas_transform = panel.transform; int i = 0; foreach (UnityEngine.UI.Text go in arrayList) { Debug.Log(go.name); // Provide Text position and size using RectTransform. RectTransform AnzeigeRect = go.GetComponent<RectTransform>(); go.transform.SetParent(canvas_transform); canvas_transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(200 + i, 200); i = i + 50; } Leider wird der Text nicht richtig positioniert. Gruss, peachplayer
  9. Hallo Leute Weiss jemand wie man Textfelder in einem Canvas via Script anordnen kann. Habs wie folgt probiert: void Start() { ArrayList arrayList = new ArrayList(); UnityEngine.Object[] allObject = (UnityEngine.UI.Text[])FindObjectsOfType(typeof(UnityEngine.UI.Text)); foreach (UnityEngine.UI.Text item in allObject) { UnityEngine.UI.Text go = item; if (go != null) { arrayList.Add(go); } } foreach (UnityEngine.UI.Text go in arrayList) { Debug.Log(go.name); RectTransform rectTransform; rectTransform = go.GetComponent<RectTransform>(); rectTransform.localPosition = new Vector3(0 + i, 0, 0); rectTransform.sizeDelta = new Vector2(200, 200); go.GetComponent<RectTransform>().localPosition = new Vector2(200 + i, 500); i += 50; } } Gruss, peachplayer
  10. peachplayer

    Auflösung ändern

    Hallo Leute Weiss jemand wie man die Auflösung bei Unity im Edit-Modus ändern kann via script? Mit der Anweisung Screen.SetResolution(800, 600, true) zB. geht es leider nicht, d.h. die Auflösung ändert immer wieder zu 2560x1440 also das Maximum. Gruss, peachplayer
  11. herzlichen dank für danke für die tipps! Es sieht schon fast richtig, aus. D.h. der Kreis ist zu 100% gefüllt, jedoch überlappen sich noch 2 Kreis-Segmente(siehe Abb.) Gruss peachplayer public void Setvalues(List<float> valuesToSet) { float restwert = 0.0f; float totalvalues = 1.0f; for (int i = 0; i < imagesPieChart.Length; i++) { totalvalues -= restwert; Debug.Log("i= " + i + "totalvalues=" + totalvalues * 100); restwert = FindPercentage(valuesToSet, i); imagesPieChart[i].fillAmount = totalvalues; }
  12. die Exception Fehlermeldung hat einen anderen Grund und hat nichts damit zu tun, dass eine Lücke beim Diagramm angezeigt wird (siehe Abb.) Es sind 5 Datenelemente die zusammen leider weniger als einen ganzen Kreis ergeben. Hat das etwas mit der Anweisung Fill.Origin zu tun? Da hierbei nur 4 verschiedene Werte(top, bottom, right u. left) möglich sind wird 1 Platz wohl doppelt besetzt.
  13. danke für die tipps! Leider weiss ich immer noch nicht wo der fehler liegt. Der Index ist nicht grösser als die Einträge von ValueToSet!
  14. Hallo Leute Ich versuche ein Kreisdiagramm zu machen. Leider klappt es nicht ganz, da es bei der Darstellung eine Lücke gibt(sieh Abb.). Kann mir jemand helfen? Ich benütze folgenden Code ¨using System.Collections; using System.Collections.Generic; using System.Linq; using UnityEngine; using UnityEngine.UI; public class PieCharts : MonoBehaviour { // Start is called before the first frame update public Image[] imagesPieChart; public float[] values; public List<Parzelle> liste1; public string KulturenAusgabe; public Text TextKulturenAusgabe; private void Awake() { liste1 = MyXML.DeserializeFromXML<Parzelle>(".\\Parzelle.xml"); } void Start() { GenerateRandomPieChart(); } public void Setvalues(List<float> valuesToSet) { float totalvalues = 0; for(int i=0; i < imagesPieChart.Length; i++) { totalvalues = FindPercentage(valuesToSet, i); Debug.Log("prozent= " + totalvalues + i); imagesPieChart[i].fillAmount = totalvalues; } } public void GenerateRandomPieChart() { List<float> valueList = new List<float>(); foreach (Parzelle item in liste1) { if (item.Datum.Year == 2023 && ) { valueList.Add(item.Fläche); KulturenAusgabe += item.Parzellenname + " " + item.Kultur + "\n"; } TextKulturenAusgabe.text = KulturenAusgabe; } foreach(float item in valueList) { Debug.Log(item); } Debug.Log(valueList.Count); Setvalues(valueList); } private float FindPercentage(List<float> valuesToSet, int index) { float totalAmount = 0; for (int i=0; i < valuesToSet.Count; i++) { totalAmount += valuesToSet[i]; } return valuesToSet[index] / totalAmount; } // Update is called once per frame void Update() { } } Gruss, peachplayer
  15. endlich hats geklappt! Jetzt sieht der Output so aus:
  16. 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
  17. ...jetzt werden alle 3 Kulturen angezeigt jedoch "verschoben":
  18. 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; } }
  19. 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?
  20. Könnte man ev. den ProBuilder dazu verwenden?
  21. 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
  22. Hallo Leute Weiss jemand wie man mehrere Textfelder in einem Canvas automatisch untereinander anordnen kann mit Script-Anweisung? Gruss, peachplayer
  23. 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 ?>
  24. peachplayer

    responsive GUI

    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
×
×
  • Neu erstellen...