Jump to content
Unity Insider Forum

[Gelöst]Änderungen im Inspektor überprüfen


Jomnitech

Recommended Posts

Hallo Zusammen

Ich wüsste gerne ob es eine Möglichkeit gibt, zu überprüfen wenn sich ein Wert im Inspektor geändert hat. Ich habe ein Script mit mehreren Arrays, diese sollen immer die gleiche länge haben. Kann man es so machen wenn ich das erste Array ändere sich die anderen Arrays automatisch auch auf die Länge setzen, ev. über einen int?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Willst du die Änderung zur Laufzeit haben oder im Editor?
Eine Längenänderung eines Array ist doof, weil es nicht sehr performant ist. Ich würde dir empfehlen Listen oder Dictionarys zu nutzen.

Aber es geht natürlich:
https://docs.microsoft.com/de-de/dotnet/api/system.array.resize?view=netframework-4.7.2

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 5 Stunden schrieb malzbie:

Willst du die Änderung zur Laufzeit haben oder im Editor?

Nur im Editor, Runtime wird nichts mehr geändert, sollte daher für die Performance kein Problem sein?

Edit:
Ach ja, danke für deine Antwort :D
Mir geht es aber nicht um das setzen der Array länge an und für sich, sondern wie ich das updaten kann wärend ich im Editor bin. Wenn ich jetzt z.B. mein int Wert auf 5 setze, dass sich dann die Arrays alle auf die länge 5 setzen.
Ich weiss nicht ob es eine Methode gibt, die prüft ob im Inspektor was geändert wurde, vorzugsweise nur am jeweiligen GameObjekt.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Habs gefunden:

https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnValidate.html

Edit:
Falls jemand mal das gleiche machen möchte:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;

public class DialogueTrigger : MonoBehaviour {

    public int arraySize;
    public Dialogue dialogue;
    

    private void OnValidate()
    //DE, DiaN, DiaHC, EN, FR, ITA, Clas
    {
        Array.Resize(ref dialogue.DE, arraySize);
        Array.Resize(ref dialogue.DiaN, arraySize);
        Array.Resize(ref dialogue.DiaHC, arraySize);
        Array.Resize(ref dialogue.EN, arraySize);
        Array.Resize(ref dialogue.FR, arraySize);
        Array.Resize(ref dialogue.ITA, arraySize);
        Array.Resize(ref dialogue.Clas, arraySize);
    }
    public void TriggerDialogue()
    {
       
        TargetManager.instance.dManager.StartDialogue(dialogue);
       
    }
}

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

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

×
×
  • Neu erstellen...