Kojote Geschrieben 30. Dezember 2018 Melden Share Geschrieben 30. Dezember 2018 Hallo! Ich habe ein kleines Problem mit einem selbst geschriebenen Editor. Mein derzeitiger Stand: Ich habe ein Script, in dem ich eine String Liste erzeuge, diese String Liste möchte ich in ein Enum verwandeln. In mehreren Scripts soll dieses aktualisierte Enum funktionieren, es soll ein Auswahlfeld sein, welches man im Editor ändern kann. Da dies mit dem normalen Enum nicht geht, hab ich mir dieses Script zusammen gebastelt: using System.Collections; using System.Collections.Generic; using UnityEditor; using UnityEngine; namespace EMM { [CustomEditor(typeof(EMM_Minimap_Icon))] public class EMM_Enum_Generator_Editor : Editor { public string[] minimapTypeChoices = new[] { "NoTypeAvailable", "Test1", "Test2" }; int choiceIndex = 0; public override void OnInspectorGUI() { // Draw the default inspector DrawDefaultInspector(); choiceIndex = EditorGUILayout.Popup(choiceIndex, minimapTypeChoices); var minimapIcon = target as EMM_Minimap_Icon; // Update the selected choice in the underlying object minimapIcon.minimapTypeChoice = choiceIndex; // Save the changes back to the object EditorUtility.SetDirty(target); } } } Des weiteren dieses Script: namespace EMM { public class EMM_Minimap_Icon : MonoBehaviour { public int minimapTypeChoice; } } Problem ist nun folgendes. Das Script EMM_Minimap_Icon existiert mehrmals. Wenn ich nun mein eigenes Enum ändere wird dies zwar erkannt, wechsel ich aber auf ein anderes Game Objekt mit diesem Script und zurück hat er den Integer "minimapTypChoice" wieder vergessen. Habt ihre eine Idee was falsch läuft? Grüße von Kojote Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Kojote Geschrieben 1. Januar 2019 Autor Melden Share Geschrieben 1. Januar 2019 Keiner ne Idee?^^ Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
MaZy Geschrieben 1. Januar 2019 Melden Share Geschrieben 1. Januar 2019 Wenn ich richtig verstanden habe, dass mehrere Scripte gleichzeitig minimapTypeChoice und gleichen Wert haben sollen, dann kannst du static variable benutzen. Weil du sagtest ja, dass es vergessen wird. Bei static sollte das nicht passieren Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Djeurissen Geschrieben 2. Januar 2019 Melden Share Geschrieben 2. Januar 2019 Da du das Enum nicht zur Laufzeit generieren willst, kannst du einfach die Datei für das Enum selbst generieren. Hier sieht man zwei Beispiele: https://answers.unity.com/questions/1170350/editorscript-generate-enum-from-string.html Zudem wirst du ja warscheinlich wissen, wann dieses Enum generiert werden soll. Eventuell kann es also hilfreich sein darauf zu achten, wann Assets geändert wurden: https://docs.unity3d.com/ScriptReference/AssetModificationProcessor.html Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Kojote Geschrieben 2. Januar 2019 Autor Melden Share Geschrieben 2. Januar 2019 Danke für die Antworten, Problem gelöst! Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Recommended Posts
Archiviert
Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.