2016-12-04 6 views
0

Ich möchte einige Optionen zu einem GUI-Element hinzufügen. Zum Beispiel wie folgt aus:Wird beim Erstellen einer GUILayoutOption Speicher reserviert?

GUILayout.Button("Click me!", GUILayout.Width(someValue)); 

Meine Frage ist, ob der Anruf zu GUILayout.Width() auf dem Heap ein neues Objekt erzeugt, speichert den Wert, oder gibt eine Struktur? Wenn es jedes Mal eine neue Instanz erstellt, kann es sinnvoll sein, sie einmal zu Beginn zu erstellen, anstatt sie bei jedem Aufruf von OnGUI() zu erstellen, um eine übermäßige Speicherbereinigung zu vermeiden.

Antwort

1

Erzeugt eine neue Instanz von GUILayoutOption bei jedem Anruf GUILayout.Width(). Im Folgenden sind Code einige Auszüge aus Unity Quelle diese Unterstützung:

Es erstellt eine neue Instanz auf jedem Aufruf GUILayout.Width()
GUILayout.cs -- Line #903

public static GUILayoutOption Width(float width) 
{ 
    return new GUILayoutOption(GUILayoutOption.Type.fixedWidth, width); 
} 

GUILayoutOption eine Klasse ist, nicht eine Struktur
GUILayoutOption.cs -- Line #5

public sealed class GUILayoutOption 

Auf eine andere Notiz: Der Anruf an GUILayout.Button dauert params GUILayoutOption[], so dass es bei jedem Aufruf implizit ein neues Array erstellen wird. Wenn Sie die GUILayoutOption zwischenspeichern möchten, können Sie sie auch im Array zwischenspeichern und an GUILayout.Button() übergeben.

Verwandte Themen