module-project-validator/README.md
2026-05-18 20:53:00 +02:00

1.5 KiB

Description

A tool to help validate data across scenes, prefabs and scriptable objects.

Editor Window

Unity Windows

Hierachy Window Project Window

Component Validators

public sealed class ComponentValidatorMeshCollider : IComponentValidator<MeshCollider>
{
    public void Validate(MeshCollider component, List<ValidatorResult> results)
    {
        if (component.sharedMesh == null)
            results.Add(ValidatorResult.Create(EValidatorSeverity.Error, "Missing mesh"));
    }
}

Attribute Validators

The field attribute:

[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = true)]
public sealed class RequiredAttribute : Attribute
{
    private readonly EValidatorSeverity _severity;

    public RequiredAttribute()
    {
        _severity = EValidatorSeverity.Error;
    }
    
    public RequiredAttribute(EValidatorSeverity severity)
    {
        _severity = severity;
    }
}

The validator implements IAttributeValidator<T>, where T is the attribute and will automatically be found by the validator.

public sealed class Validator : IAttributeValidator<RequiredAttribute>
{
    public ValidatorResult Validate(RequiredAttribute attribute, object value)
    {
        var isValid = value is UnityEngine.Object obj ? obj != null : value != null;
        return isValid ? ValidatorResult.Valid : ValidatorResult.Create(attribute._severity, "Value is Null");
    }
}