Unsere Verifizierungsattribute sind eine leistungsstarke Methode, um Einschränkungen zu erzwingen und Felder in deinen Unity-Skripten zu validieren. Mit diesen Attributen kannst du sicherstellen, dass Daten und Konfigurationen bestimmte Bedingungen erfüllen, was für die Wahrung der Datenintegrität und die Vermeidung von Fehlern unerlässlich ist. Diese Attribute helfen Entwicklern, indem sie Fehler schon auf der Editor-Ebene erkennen, bevor sie sich in Laufzeitfehlern oder unerwartetem Verhalten niederschlagen.
Wie sie funktionieren
Benutzerdefinierte Überprüfungsattribute werden zu Feldern in deinen Skripten hinzugefügt. Diese Attribute enthalten Regeln, die festlegen, was für die jeweiligen Felder als gültig angesehen wird. Wenn das Skript im Unity-Editor verwendet wird, führen die Attribute auf der Grundlage dieser Regeln Prüfungen durch und geben Warnungen oder Fehler aus, wenn die Daten in den Feldern nicht den Regeln entsprechen.
Wie man sie einsetzt
Um diese benutzerdefinierten Überprüfungsattribute zu verwenden, fügst du das Attribut einfach über dem Feld hinzu, auf das du die Überprüfung anwenden möchtest, und gibst alle notwendigen Parameter ein, um die Regel zu konfigurieren.
Beispiel:
[VStringCheck(StringCheck.Email, minLength = 5, maxLength = 30)]
public string emailAddress;
[VRequired]
public GameObject prefab;
Dieses Beispiel stellt sicher, dass die emailAddress
Feld eine gültige E-Mail enthält und dass sie zwischen 5 und 30 Zeichen lang ist. Außerdem stellt es sicher, dass die Voreinstellung immer zugewiesen ist - wenn nicht, wird eine Meldung im System ausgegeben.
Schauen wir uns nun die verfügbaren Attribute an und wie man sie verwendet.
Liste der Attribute
⭐ Dies ist eine Liste der Attribute, die unser System derzeit bietet. Du kannst sie mit deiner eigenen Logik erweitern, indem du die VCustomValidationAttribute oder lass es uns wissen wenn etwas fehlt!
VAssetsOnlyAttribute
- Beschreibung: Überprüft, ob ein Feld, das mit einem UnityEngine.Object zugewiesen wurde, nur Verweise auf Assets und nicht auf Szenenobjekte enthält.
- Parameter: Keine.
- Beispiel:
[VAssetsOnly]
public GameObject prefab;
VCustomValidationAttribute
- Beschreibung: Ermöglicht eine benutzerdefinierte Überprüfungslogik, indem eine benutzerdefinierte Überprüfungsmethode bereitgestellt wird. Auf diese Weise kannst du die Überprüfungsfunktionen mit deiner eigenen Logik erweitern.
- Parameter:
validationType
(Typ): Der Typ, der die benutzerdefinierte Validierungsmethode enthält.validationMethodName
(String): Der Name der benutzerdefinierten Validierungsmethode.
- Beispiel:
public static class MyCustomValidators
{
public static bool ValidatePositive(int value)
{
return value > 0;
}
}
public class MyScript : MonoBehaviour
{
[VCustomValidation(typeof(MyCustomValidators), "ValidatePositive")]
public int MyValue;
}
VDisallowTypeAttribute
- Beschreibung: Überprüft, dass ein Feld keine Instanz eines bestimmten Typs enthält.
- Parameter:
disallowedType
(Typ): Der Typ, der dem Feld nicht zugewiesen werden soll.
- Beispiel:
[VDisallowType(typeof(Sprite))]
public Object myObject;
VElementCountAttribute
- Beschreibung: Überprüft, ob eine Sammlung eine bestimmte Anzahl von Elementen enthält.
- Parameter:
min
(int): Die Mindestanzahl der Elemente (einschließlich).max
(int): Die maximale Anzahl der Elemente (einschließlich).
- Beispiel:
[VElementCount(1, 3)]
public int[] numbers;
[VElementCount(max: 3)]
public int[] numbers;
VNonNullElementsAttribute
- Beschreibung: Prüft, ob alle Elemente in einer Sammlung (Array, Liste usw.) nicht leer sind.
- Parameter: Keine.
- Beispiel:
[VNonNullElements]
public GameObject[] gameObjects;
VObsoleteAttribute
- Beschreibung: Markiert ein Feld als veraltet, damit es im Editor markiert werden kann.
- Parameter: Keine.
- Beispiel:
[VObsolete]
public int oldField;
VRangeAttribute
- Beschreibung: Prüft, ob der Wert eines numerischen Feldes innerhalb eines bestimmten Bereichs liegt.
- Parameter:
minValue
(Float): Der Mindestwert des Bereichs (einschließlich).maxValue
(Float): Der Höchstwert des Bereichs (einschließlich).
- Beispiel:
[VRange(1, 5)]
public int myNumber;
VRequiredAttribute
- Beschreibung: Überprüft, ob ein Feld nicht null oder leer ist (für Strings und Collections).
- Parameter: Keine.
- Beispiel:
[VRequired]
public string name;
VRequireChildObjectAttribute
- Beschreibung: Überprüft, ob ein GameObject-Feld ein Kind des GameObjects ist, an das das Skript angehängt ist.
- Parameter:
includeSelf
(bool): gibt an, ob eine Referenz auf das Objekt selbst erlaubt ist (Standardwert false)
- Beispiel:
[VRequireChildObject]
public GameObject childObject;
VRequireComponentAttribute
- Beschreibung: Überprüft, ob ein GameObject- oder MonoBehaviour-Feld mit einer bestimmten Komponente verbunden ist. Dies ist ähnlich wie die
RequireComponent
die von Unity bereitgestellt werden, aber für Felder, nicht für Klassen. - Parameter:
requiredComponentType
(Typ): Der Typ der gewünschten Komponente.
- Beispiel:
[VRequireComponent(typeof(Rigidbody))]
public GameObject myGameObject;
VSceneObjectsOnlyAttribute
- Beschreibung: Überprüft, ob ein Feld, das mit einer
UnityEngine.Object
enthält nur Verweise auf Szenenobjekte, nicht auf Assets. - Parameter: Keine.
- Beispiel:
[VSceneObjectsOnly]
public GameObject sceneObject;
VStringCheckAttribute
- Beschreibung: Bietet mehrere Optionen für die String-Validierung, wie z. B. die Überprüfung von URLs und E-Mail-Adressen, die Überprüfung der Mindest- und Maximallänge und vieles mehr.
- Parameter:
prüft
(StringCheck-Flags): Die Validierungsprüfungen, die für den String durchgeführt werden sollen.disallowPattern
(String): Ein Regex-Muster, dem der String nicht entsprechen soll. Der Standardwert ist ein leerer String, was bedeutet, dass keine Musterprüfung stattfindet.minLength
(int): Minimale Länge des Strings. Standardwert ist 0.maxLength
(int): Maximale Länge des Strings. Standard ist int.MaxValue.
- StringCheck-Flags:
NotEmpty
: Stelle sicher, dass der String nicht leer ist.URL
: Stelle sicher, dass der String eine wohlgeformte URL ist.NoWhiteSpace
: Achte darauf, dass der String keine Leerzeichen enthält.Numerisch
: Achte darauf, dass der String numerisch ist.E-Mail
: Stelle sicher, dass die Zeichenfolge eine gültige E-Mail-Adresse ist.Alphabetisch
: Achte darauf, dass die Zeichenfolge alphabetisch ist.Alphanumerisch
: Achte darauf, dass die Zeichenfolge alphanumerisch ist.URLAbsolut
: Achte darauf, dass der String eine absolute URL ist.URLRelative
: Stelle sicher, dass der String eine relative URL ist.MinLength
: Prüfe, ob der String mindestens die angegebene Mindestlänge hat.MaxLength
: Überprüfe, ob die Zeichenkette höchstens die angegebene Maximallänge hat.Dateipfad
: Stelle sicher, dass der String ein gültiger Dateipfad ist.VerzeichnisPfad
: Stelle sicher, dass der String ein gültiger Verzeichnispfad ist.
- Beispiel:
[VStringCheck(StringCheck.NotEmpty | StringCheck.Email, minLength = 5, maxLength = 30)]
public string emailAddress;
[VStringCheck(StringCheck.FilePath)]
public string filePath;
[VStringCheck(StringCheck.DirectoryPath)]
public string directoryPath;
[VStringCheck(StringCheck.Numeric | StringCheck.MinLength, minLength = 10)]
public string numericString;
VUniqueElementsAttribute
- Beschreibung: Prüft, ob eine Sammlung nur eindeutige Elemente enthält.
- Parameter: Keine.
- Beispiel:
[VUniqueElements]
public int[] numbers;