peachplayer
Members-
Gesamte Inhalte
271 -
Benutzer seit
-
Letzter Besuch
-
Tagessiege
3
Inhaltstyp
Profile
Forum
Kalender
Blogs
Alle erstellten Inhalte von peachplayer
-
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
-
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
-
danke für den Tipp! Debug.Log() gibt den Datumswert 0 heraus, also stimmt eigentlich die Berechnung der Datumsdifferenz!
-
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
-
inputfield kann nur ganzzahlige werte annehmen
Thema antwortete auf peachplayers peachplayer in: Scripting
Den Content Type auf decimal änderen bringt leider auch nichts. -
inputfield kann nur ganzzahlige werte annehmen
Thema antwortete auf peachplayers peachplayer in: Scripting
-
inputfield kann nur ganzzahlige werte annehmen
Thema antwortete auf peachplayers peachplayer in: Scripting
leider kommt die Fehlermeldung immer noch auch wenn ich den Punkt als Trennzeichen eingebe. -
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."
-
wie positioniert man Text in einem Canvas via script?
Thema antwortete auf peachplayers peachplayer in: Scripting
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 -
wie positioniert man Text in einem Canvas via script?
ein Thema hat peachplayer erstellt in: Scripting
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 -
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
-
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; }
-
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.
-
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!
-
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
-
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 ?>
-
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