Jump to content
Unity Insider Forum
Jomnitech

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

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?

Share this post


Link to post
Share on other sites

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

 

  • Thanks 1

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites

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);
       
    }
}

 

  • Like 1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×