Skip to content

rabit2022/GodotExportValidator

Repository files navigation

GodotExportValidator

介绍

Godot 验证export的资源是否手动挂载,并提供提示信息。

项目地址

下载

dotnet add package GodotExportValidator

示例

节点验证

[Export] [Validate] private string test;

[Export] [Validate] public Node test2;

public override void _Notification(int what)
{
    base._Notification(what);
    if (what == NotificationEnterTree)
    {
        OnValidate();
    }
}

intro.png

生成代码:

// Main_Validate.generate.cs auto-generated by GodotExportValidator
using GodotExportValidator;
partial class Main
{
private void OnValidate()
{
ValidateUtilities.ValidateCheckEmptyString(this, "test", test);
ValidateUtilities.ValidateCheckNullValue(this, "test2", test2);
}
}

resource的验证

[GlobalClass] // 编辑器中创建资源
public partial class BuildingResource : Resource
{
    ...
    /// <summary>
    /// 这里必须创建public函数Validate,OnValidate()函数 代码生成,无法被检测到
    /// </summary>
    public void Validate()
    {
        OnValidate();
    }
}
internal partial class TestResourceValidator:Node
{
    public override void _Ready()
    {
        ResourceValidator.ValidateAllResourcesInFolder("res://resources/building/");
    }
}

Snipaste_2025-12-01_23-21-21.png

原理

  • 源生成器生成OnValidate方法,在节点树进入树时调用,遍历所有导出属性,检查是否手动挂载,并提供提示信息。
  • nuget 打包项目包含Analyzer和lib文件夹,其中Analyzer属于源生成器,lib文件夹包含运行时代码.
  • using导入的ValidateUtilities是 godot 编译的dll,暂时没有兼容性问题,项目打包后可以正常运行。

About

Godot 验证export的资源是否手动挂载

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published