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

