我可以将属性设置为抑制警告吗?

5
我已经创建了一个属性,可以在运行时自动为变量分配值,如下所示:
    [Assign(AssignmentTime.Awake)]
    private Rigidbody _rigidBody;

然而,编译器理所当然地发出了警告,指出该值从未被赋值并将始终为空。有没有一种方法可以使属性自动禁用警告?我不想每次使用该属性时都写下警告抑制的#pragma。

2个回答

3

明确地说:不,你不能通过自定义属性来抑制警告。你可以使用:

  • [SuppressMessage(...)] 以及你的属性
  • #pragma warning {disable|enable} {codes}

这两个选项都可以在IDE中的警告弹出窗口中找到。


2
你可以赋一个默认值,例如null。这将使警告消失。但是后面的你自己赋值或者在检查器中赋值将会覆盖默认值。
[Assign(AssignmentTime.Awake)]
private Rigidbody _rigidBody = null;

我简直不敢相信这真的起作用了。虽然在IDE中仍然会有下划线,但Unity不再将其显示为警告。虽然不是理想的解决方案,但已经足够了。谢谢! - Arseni Natapov
是的,警告信息可能会在IDE或Unity控制台中出现。我更喜欢Unity控制台尽可能地自由。 - aalmigthy
现在明确地分配 null 会导致不同的警告:CS0649:字段 'field' 没有被分配,并且将始终具有其默认值 'value'。 - DoomGoober

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接