Jump to content
Unity Insider Forum

Klasse als Array im Inspector


Wattsefakk

Recommended Posts

Moinsen,
Ich habe eine Klasse
 

[System.Serializable]
public class TextToMesh : Editor
{
    public string charstring;
    public GameObject Gameobject;
    public float Heightoffset;


}

diese möchte ich jetzt in einer anderen Klasse als 

public TextToMesh[] Test;

einfügen. Nun kann ich aber leider nicht im Inspector auf die einzelnen Attribute aus der Klasse TextToMesh zugreifen. Möchte halt einfach ein Array haben wo ich im Editor die einzelnen Attribute setzen kann. Bei einem Object ist das ja kein Problem nur wenn ich die Objecte in ein Array schmeiße kann ich nur solche Objekte einfügen aber kann nicht auf die Attribute zugreifen. Habt ihr da eine Idee?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hier mal ein Beispiel:
http://catlikecoding.com/unity/tutorials/editor/custom-data/

PS:
Nimm bei deiner Klasse mal die Vererbung von Editor weg. Ich denke dann sollte es auch ohne Customeditorklasse gehen:

[System.Serializable]
public class TextToMesh
{
    public string charstring;
    public GameObject Gameobject;
    public float Heightoffset;


}

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Eine Kurzfassung der Möglichkeiten:

[System.Serializable]
public class Klassenname

sowie

[System.Serializable]
public struct Structname

erzeugen

image.png

wobei man sich immer die Frage stellen sollte, ob eine Klasse oder ein Struct sinnvoller ist. In den meisten Fällen, in denen man einfach nur eine Menge von Werten im Editor darstellen will, sind Structs wesentlich praktischer.

Ansonsten gibt es noch

public class Klassenname : Object

wobei Object UnityEngine.Object ist und nicht System.Object. Man beachte auch, dass das Attribut nicht mehr gebraucht wird.

Das erzeugt:

image.png

Und das Objekt kann nur noch durch reinziehen referenziert werden. Es muss also woanders erzeugt werden, z.B. durch erben von ScriptableObject.

TL;DR: Wenn das Objekt als Foldout im Editor sein soll, von nichts erben und [System.Serializable] drüber packen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...