Version: 6000.3
语言: 中文
定义命名空间前缀
管理元素的最佳实践

自定义控件库编译疑难解答

本故障排除指南可帮助你解决将自定义控件编译为 DLL 时出现的问题。

症状

将自定义控件编译为 DLL 时,可能会遇到以下问题:

  • 自定义控件不会显示在 UI 生成器中。
  • 生成库 (DLL) 时,自定义控件无法正确序列化。

原因

UI Toolkit 使用 UxmlElement 代码生成器来支持 UXML 序列化。但是,将自定义控件编译为 DLL 时,默认情况下不包含生成的序列化代码,从而导致元素可见性和序列化问题。

分辨率

若要解决此问题,请运行 UI 工具包源生成器 (Unity.UIToolkit.SourceGenerator.dll) 在 DLL 编译过程中。

  1. 在 Unity 安装中找到源生成器文件。它通常位于:<Unity Installation Path>\Data\Tools\Unity.SourceGenerators\Unity.UIToolkit.SourceGenerator.dll.

  2. 将源生成器添加为分析器,在库项目的.csproj文件<ItemGroup>:

    <ItemGroup>
        <Analyzer Include="path\to\Unity.UIToolkit.SourceGenerator.dll" />
    </ItemGroup>
    
  3. 像往常一样编译您的库。这将触发源生成器,该生成器会为自定义控件生成所需的 UxmlSerializedData 类。

提示:始终根据您正在使用的 Unity 版本重新生成您的库,因为生成的代码可能因版本而异。

其他资源

定义命名空间前缀
管理元素的最佳实践