Jump to content
Unity Insider Forum

Willy_Wonder

Members
  • Content count

    42
  • Joined

  • Last visited

Community Reputation

0 Neutral

About Willy_Wonder

  • Rank
    Advanced Member
  1. Willy_Wonder

    SQLite auslesen

    kann ich MeineObjekte iwie den myObjects zuordnen?
  2. Willy_Wonder

    SQLite auslesen

    ich schätze mal, die Funktion FindObjekt wird nicht richtg ausgeführt. im skript habe ich ja MeineObjekte (das ist die Indikatorspalte in meiner SQL DB), MeineZustaende (die Spalte Zustand in der SQL DB) und myObjects, wo ich dann manuell meine GameObjects hinzufüge.
  3. Willy_Wonder

    SQLite auslesen

    okay, gerade ausprobiert - jetzt nimmt er den 1. cube und ordnet da auch den richtigen Button und Zustand (mit Farbe) zu. Allerdings scheint er die restlichen Cubes nicht zu erkennen
  4. Willy_Wonder

    SQLite auslesen

    wäre die logik dahinter richtig? for (int Zustand = 0; Zustand <=2; Zustand ++) { if (Zustand == 0) { aktuellesObjekt.GetComponent<Renderer>().materials [0].color = Color.green; aktuellesObjekt.AddComponent<ButtonIO> (); } else if (Zustand == 1) { aktuellesObjekt.GetComponent<Renderer>().materials [0].color = Color.blue; aktuellesObjekt.AddComponent<ButtonWartung> (); } else { aktuellesObjekt.GetComponent<Renderer>().materials [0].color = Color.red; aktuellesObjekt.AddComponent<ButtonAlarm> (); } } funktioniert jedenfalls nicht... hab jetzt allerdings jeweils 1x den button auf derselbem Objekt. ich befürchte, dass diese geschichte mit "FindObject" nicht ganz sauber läuft
  5. Willy_Wonder

    SQLite auslesen

    Moin, ihr Lieben! disclaimer: * (das hier ist die Fortsezung meiner Legende über Zustände und Anlagen :D) * ich bin mit meinem Latein am Ende ich muss jetzt die csv datei durch eine sql datenbank ersetzen. ich habe alles zusammengesucht, eine DB erstellt und einen Script geschrieben, wo diese ausgelesen wird. sieht ganz gut aus, debug.log zeigt mir auch das an, was ich sehen möchte nun zum eigentlichen Problem: wie kann ich nun meine Objekte den Namen in der SQL DB zuordnen? so, dass unity erkennt, welche Objekte vorhanden sind und dann die if funktion ausführt? oO mein skript sieht gerade so aus: using System.Collections; using System.Collections.Generic; using UnityEngine; using Mono.Data.Sqlite; using System; using System.Data; public class ZustaendeNEU : MonoBehaviour { private string connectionString; public List<string> MeineObjekte; public GameObject[] myObjects; public List<int> MeineZustaende; void Start () { connectionString = "URI=file:" + Application.dataPath + "/Anlagen.sqlite"; GetZustaende (); } private void GetZustaende () { MeineObjekte = new List<string>(); MeineZustaende = new List<int>(); using (IDbConnection dbConnection = new SqliteConnection (connectionString)) { dbConnection.Open (); using (IDbCommand dbCmd = dbConnection.CreateCommand ()) { string sqlQuery = "SELECT * FROM Zustandstabelle"; dbCmd.CommandText = sqlQuery; using (IDataReader reader = dbCmd.ExecuteReader ()) { while (reader.Read ()) { MeineZustaende.Add (reader.GetInt32 (2)); MeineObjekte.Add (reader.GetString (1)); //Debug.Log (reader.GetString (1) + " - " + reader.GetInt32 (2)); } dbConnection.Close (); reader.Close (); } } } //BIS HIER ALLES RICHTIG! GameObject aktuellesObjekt; foreach (string Indikator in MeineObjekte) { aktuellesObjekt = FindObject(Indikator); foreach (int Zustand in MeineZustaende) { if (Zustand == 0) { aktuellesObjekt.GetComponent<Renderer>().materials [0].color = Color.green; aktuellesObjekt.AddComponent<ButtonIO> (); } else if (Zustand == 1) { aktuellesObjekt.GetComponent<Renderer>().materials [0].color = Color.blue; aktuellesObjekt.AddComponent<ButtonWartung> (); } else { aktuellesObjekt.GetComponent<Renderer>().materials [0].color = Color.red; aktuellesObjekt.AddComponent<ButtonAlarm> (); } } } } private GameObject FindObject(string IndikatorName) { GameObject foundObject = null; foreach (GameObject Indikator in myObjects) { if (Indikator.name == IndikatorName) { foundObject = Indikator; } } return foundObject; } } so wie es gerade ausieht, schmeißt unity meinen skript nur auf Cube(1), denn alle 6 Buttons erscheinen an derselben Position ._. vieln dank im voraus!
  6. Willy_Wonder

    Excel Tabelle in Unity einbinden

    Es funktioniert!! woooohooo, die Farben werden nun übernommen :> ich habe auch meinen Fehler gefunden vielen vielen lieben dank, @Zer0Cool und @Mabenan! ihr könnt euch nicht vorstellen, wie dankbar ich euch bin! :3
  7. Willy_Wonder

    Excel Tabelle in Unity einbinden

    ich habe nun erstmal mit den Buttons weitergemacht, funktioniert leider immer noch nicht so ganz... skript weist keine fehler auf, aber nun färben sich die cubes auch nicht mehr ein, geschweige denn es passiert noch was beim Anklicken xD public TextAsset csvFile; public GameObject[] meineObjekte; public Color[] meineFarben; public void Start() { GameObject aktuellesObjekt; // Speichert das aktuell zu bearbeitende Objekt string[] Zeilen = csvFile.text.Split ('\n'); int aktuelleZeile = 0; foreach (string Zeile in Zeilen) { // Gehe alle Zeilen in der CSV-Datei durch int aktuelleSpalte = 0; aktuelleZeile += 1; string[] Spalten = Zeile.Split (','); aktuellesObjekt = null; // Noch kein zu bearbeitendes Objekt gefunden foreach (string Spalte in Spalten) { // Gehe alle Spalten der jeweiligen Zeile durch aktuelleSpalte += 1; Debug.Log ("Zeile " + aktuelleZeile + " Spalte " + aktuelleSpalte + " = " + Spalte); if (aktuelleSpalte == 1) { // wenn wir uns in der 1. Spalte befinden (hier stehen die Objektnamen) aktuellesObjekt = SuchePassendesObjekt (Spalte); // Sucht das passende Objekt zum Namen der in der Spalte enthalten ist } if (aktuellesObjekt != null && aktuelleSpalte == 2) { // Falls Objekt gefunden wurde und wenn wir uns in der 2. Spalte befinden (hier stehen die Farben) aktuellesObjekt.GetComponent<Renderer> ().materials [0].color = meineFarben [int.Parse (Spalte)]; } if (Spalten[2]=="0") { aktuellesObjekt.AddComponent<ButtonIO>(); } if (Spalten[2]=="1") { aktuellesObjekt.AddComponent<ButtonWartung>(); } if (Spalten[2]=="2") { aktuellesObjekt.AddComponent<ButtonAlarm>(); } } } } private GameObject SuchePassendesObjekt(string objektName) { GameObject gefundenesObjekt = null; foreach (GameObject objekt in meineObjekte) // Durchsuche alle meine Objekte { if (objekt.name == objektName) // Suche das Objekt mit dem Namen { // Entsprechende Objekt gefunden! gefundenesObjekt = objekt; } } return gefundenesObjekt; } }
  8. Willy_Wonder

    Excel Tabelle in Unity einbinden

    @Mabenan habe deinen Code jetzt übernommen, funktioniert dennoch nicht :/ ich schmeiße ja den script auf ein leeres GameObject, richtig? Builde dann das "Spiel" - es entshteht eine .exe Datei und ein Ordner der sich "data" nennt. meine CSV datei ist da aber nirgendwo drin. wenn ich aber meine ursprüngliche CSV datein (aus der asset mappe in meinem unity projekt) ändere, tut sich gar nichts im spiel ..
  9. Willy_Wonder

    Excel Tabelle in Unity einbinden

    ich habe jetzt folgenden Skript auf mein GameObject (eigentlich ein leeres Objekt) geworfen. using System.Collections; using System.Collections.Generic; using UnityEngine; public class PathFinder : MonoBehaviour { public string filePath = System.IO.Path.Combine(Application.streamingAssetsPath, "!/assets/StreamingAssets/Zustand.csv"); IEnumerator Example() { if (filePath.Contains("://")) { WWW www = new WWW(filePath); yield return www; } } } Builden funktioniert, die Farbänderung nicht :/
  10. Willy_Wonder

    Excel Tabelle in Unity einbinden

    Guten Morgen! heute mache ich nun endlich weiter habe jetzt versucht meinen skript anzupassen, mit der 2. variante von @Zer0Cool, die erschien mir irgendwie logischer ^^ aktuellesObjekt = null; // Noch kein zu bearbeitendes Objekt gefunden foreach (string Spalte in Spalten) // Gehe alle Spalten der jeweiligen Zeile durch { aktuelleSpalte += 1; Debug.Log("Zeile " + aktuelleZeile + " Spalte " + aktuelleSpalte + " = " + Spalte); if (aktuelleSpalte == 2) // wenn wir uns in der 1. Spalte befinden (hier stehen die Objektnamen) { aktuellesObjekt = SuchePassendesObjekt(Spalte); // Sucht das passende Objekt zum Namen der in der Spalte enthalten ist } if (aktuellesObjekt != null && aktuelleSpalte == 3) // Falls Objekt gefunden wurde und wenn wir uns in der 2. Spalte befinden (hier stehen die Farben) { aktuellesObjekt.GetComponent<Renderer>().materials[0].color = meineFarben[int.Parse(Spalte)]; if (Spalten[1]=="0") { aktuellesObjekt.AddComponent<ButtonIO>; } if (Spalten[1]=="1") { aktuellesObjekt.AddComponent<ButtonWartung>; } if (Spalten[1]=="2") { aktuellesObjekt.AddComponent<ButtonAlarm>; } } } } } leider kommt dabei ein fehler raus :/ danke! das werde ich gleich ausprobieren !
  11. Willy_Wonder

    Excel Tabelle in Unity einbinden

    die Farben sind da, aber ich kann sie nicht ändern. Die Farben passen auch zu den Zuständen, die zum Zeitpunkt des Buildens in der Liste als Zustände zugewiesen waren. das heißt, ich nehmen nun den gleichen Skript für die zustände, erweitere diesen aber mit diesen Skripts und nehme dann dafür meine fertigen? EDIT: rufeMethodeX ? rufeMethodeY? blöde Frage, aber wofür steht das?
  12. Willy_Wonder

    Excel Tabelle in Unity einbinden

    habe jetzt eine idee, die frage ist, ob die überhaupt sinn ergibt? ich habe 3 unterschiedliche Skripte für 3 Zustände (die sind fertig und funktionieren auch, wenn ich diese den Cubes zuweise). Könnte ich dann einfach den Skript von @Zer0Cool mit den Farben so ändern, dass man im insprector anstatt von Farben diese Skripte zuweist? so nach dem motto: meine Zustände -> Size 3 -> und da für Element 0, 1 und 2 dann die jeweiligen Skripte für die Buttons reinziehen? ist es sinnvoll? EDIT: okay, diese if schleife und oben public Color [] muss geändert werden. welchen value type nimmt man denn für ein script? if (aktuellesObjekt != null && aktuelleSpalte == 3) { aktuellesObjekt.GetComponent<Renderer>().materials[0].color = meineFarben[int.Parse(Spalte)]; }
  13. Willy_Wonder

    Excel Tabelle in Unity einbinden

    hallo nochmal an alle zwischenbericht: ich habe das skript an mein projekt angepasst und es funktioniert einwandfrei ! kurze frage: wenn ich jetzt die szene als .exe datei builde, dann die zustände in der csv datei ändere, passiert in meinem "gebuildeten" spiel leider gar nichts, sprich, die zustände werden auf die .exe datei nicht übertragen. in unity funktioniert alles, da ändere ich die zustände in der liste und die farben passen sich an. woran könnte es liegen? und noch eine weitere frage für die zukunft: aktuellesObjekt = null; foreach (string Spalte in Spalten) { aktuelleSpalte += 1; Debug.Log("Zeile " + aktuelleZeile + " Spalte " + aktuelleSpalte + " = " + Spalte); if (aktuelleSpalte == 2) { aktuellesObjekt = SuchePassendesObjekt(Spalte); } if (aktuellesObjekt != null && aktuelleSpalte == 3) { aktuellesObjekt.GetComponent<Renderer>().materials[0].color = meineFarben[int.Parse(Spalte)]; } kann ich in diese if funktion noch eine Funktion mit einem OnMouseDown GUI-Button hinzufügen? oder muss ich dafür einen neuen CSV-Skript erstellen, der jedem Objekt in meiner Szene zugewiesen werden muss, so dass wenn man drauf klickt, ein Button mit einem Text erscheint, der von dem Zustand in meiner Liste abhängig ist?
  14. Willy_Wonder

    Excel Tabelle in Unity einbinden

    halleluja!!! es funktioniert ! danke dir! ich werde mich dann morgen damit weiter beschäftigen und dir auf die nerven gehen xD auf jeden fall kennt meine dankbarkeit gerade keine grenzen :3
  15. Willy_Wonder

    Excel Tabelle in Unity einbinden

    genau, das hab ich getan. ein rot und ein grün.
×