如何让VSCode中Unity C#的Start()、Update()等方法显示悬停文档
问题原因
你自己实现的Start()、Awake()这类生命周期方法是MonoBehaviour基类定义的虚方法,出现仅显示签名不显示官方文档的问题,核心是VSCode的C#语言服务没有把你重写的子类方法和基类的XML注释关联起来。
解决步骤
第一步:确认C#扩展的文档显示开关开启
如果你使用新版C# Dev Kit扩展,打开VSCode设置,搜索@ext:ms-dotnettools.csharp documentation,确保Show XML Documentation Comments选项已勾选。
如果你使用旧版OmniSharp扩展,搜索omnisharp.enableXmlDocumentationSupport,确认配置值为true。第二步:重新生成Unity项目文件
打开Unity编辑器,依次进入Edit > Preferences > External Tools,确认外部脚本编辑器已选中你当前使用的VSCode路径,点击Regenerate project files按钮,重新生成解决方案和项目配置文件,Unity会自动把官方注释文档的引用写入项目配置。第三步:(如果前两步无效)手动添加文档引用配置
在你的Unity项目根目录新建Directory.Build.props文件(如果已存在直接修改),写入以下内容:<Project> <PropertyGroup> <GenerateDocumentationFile>true</GenerateDocumentationFile> <NoWarn>$(NoWarn);1591</NoWarn> </PropertyGroup> <ItemGroup> <Reference Include="UnityEngine"> <HintPath>Library/ScriptAssemblies/UnityEngine.dll</HintPath> <Private>False</Private> </Reference> </ItemGroup> </Project>保存文件后,按
Ctrl+Shift+P(Mac系统为Cmd+Shift+P)调出命令面板,执行.NET: Restart Language Server重启C#语言服务即可。第四步:匹配.NET SDK版本
确认你本地安装的.NET SDK版本和Unity项目使用的.NET版本一致,例如Unity 2021及以上版本默认使用.NET 6,版本不匹配会导致XML注释解析失败。
内容的提问来源于stack exchange,提问作者Ross M

