我今天刚刚开始使用Reshaper,并且收到很多关于Unity3D提供的未使用方法的警告,比如Awake(), Start()
和Update()
等。这些是Unity3D用Reflection调用的,Resharper无法知道,因此警告他们
有没有更好的方法来抑制那些,然后只是禁用整个“类型或方法永远不会使用”警告,或将[UsedImplicitly]属性添加到所有内容?
答案 0 :(得分:10)
ReSharper 10具有“Unity支持”扩展,可以很好地将Unity隐含的MonoBehaviour函数和公共变量标记为“已使用”。
https://github.com/JetBrains/resharper-unity
您可以从Visual Studio内部安装direclty:
ReSharper> Extension Manager ...>搜索'Unity'>点击“Unity支持”
上的“安装”
答案 1 :(得分:4)
作为@BlueRaja评论 - 您已经列出了所有可能的解决方案。最好的解决方案是使用[UsedImplicitly]
属性,它是ReSharper Annotations的一部分。但是,不是在代码中将其应用于您的类型,而是最好注释基本类型(我猜测MonoBehavior
?我很抱歉,我&# 39;我不熟悉Unity3D API)。这样,您实现的每种类型都会自动继承[UsedImplicitly]
属性。
可以通过External Annotations进行最佳和非侵入性的方式 - 与代码注释相同,但可通过XML从外部应用。
这里有3个选择:要么你自己这样做(看一下位于
的ExternalAnnotations目录)%localappdata%\ JetBrains \ ReSharper \ vAny \ packages \ ReSharper.ExternalAnnotations ...
自ReSharper 8.2或
C:\ Program Files(x86)\ JetBrains \ ReSharper \ vX.X \ ExternalAnnotations
在以前的版本中)
您可以找到外部注释XML的示例,并按照相同的命名约定自行创建。为帮助您以正确的格式复制方法名称,可以使用ReSharper中“编辑”菜单下的Copy XML-Doc ID to Clipboard
选项。
通过这种方式,您可以注释Unity3D基类,然后将此XML作为ReSharper扩展名分发给其他人。益处。
(你可以做的另外两件事就是说服Unity3D自己做这件事,或者在ReSharper的bug追踪器上打开一个问题,也许JetBrains会做到这一点。但你最好的选择就是自己这样做)
希望这有帮助。
答案 2 :(得分:1)
我通常只是让它们公开,不足之处在于它们会显示在您可以从其他脚本调用的方法列表中。这些方法可能仍会显示为灰色(如在解决方案中的任何地方都没有调用),但至少您不会再获得警告。
注释事情对我来说永远不会有用,所以这是我的解决方法。