public void RefreshSelectedFiles(bool deleteFalseOnes = true) { //Anzeige leer machen foreach (var displayLine in FileDisplayContents) { Destroy(displayLine); } FileDisplayContents.Clear(); //Wenn Pfade angezeigt werden... if (FilePathsAndStatus.Count != 0) { for (var i = 0; i < FilePathsAndStatus.Count; i++) { var file = FilePathsAndStatus[i]; //Debug.Log("Anzahl Elemente in Filepath...: " + FilePathsAndStatus.Count); /*Debug.Log("Gerade behandeltes Objekt: " + file.FullFilePath + " IsValid = " + file.isValid + "\n" + * " isChecked = " + file.isChecked + " HasBeenShown = " + file.statusHasBeenShown + " Index: " + i * ); */ //alle die noch nicht gezeigt wurden anzeigen if (!file.statusHasBeenShown) { AddToFileDisplay(file.FullFilePath, file.isChecked, file.isValid); file.statusHasBeenShown = true; //Debug.Log("Bisher nicht gezeigte Datei wird gezeigt: " + file.FullFilePath); } else { //alle validen weiterhin anzeigen if (file.isValid) { AddToFileDisplay(file.FullFilePath, file.isChecked, file.isValid); //Debug.Log("Richtige Datei, die bereits gezeigt wurde wird gezeigt: " + file.FullFilePath); } //invalide löschen, die bereits 1x angezeigt wurden. else { if (deleteFalseOnes) { FilePathsAndStatus.RemoveAt(i); //müsste so passen...ich mag diese Syntax nicht.. i--; //Index zurücksetzen, weil sonst letztes Element überschlagen wird.... //Debug.Log("Ungültige Datei wird gelöscht und nicht gezeigt: " + file.FullFilePath); } else { AddToFileDisplay(file.FullFilePath, file.isChecked, file.isValid); //Debug.Log("Falsche Datei, die bereits gezeigt wurde wird gezeigt: " + file.FullFilePath); } } } } } }
// K L E I N E H E L P E R F U N K T I O N E N private void AddToFileDisplay(string path, bool isChecked, bool valid = false, bool duplicate = false) { //Instanziere neue Textline nach prefab Vorlage mit FileDisplayContentWindow als Parent var displayLine = Instantiate(FileTextPrefab); FileDisplayContents.Add(displayLine); displayLine.transform.SetParent(FileDisplayContentWindow.transform, false); var textfields = displayLine.GetComponentsInChildren <Text>(); if (textfields.Length == 2) { textfields[0].text = path; if (isChecked) { if (valid) { textfields[1].text = "(OK)"; textfields[1].color = Color.green; } else { if (duplicate) { textfields[1].text = "(Duplikat)"; textfields[1].color = new Color(1.0f, 0.6f, 0.0f); } else { textfields[1].text = "(Fehler)"; textfields[1].color = Color.red; } } } else { textfields[1].text = ""; } } }