As @BlueRaja comments - you've pretty much listed all possible solutions. The best solution is to indeed use the [UsedImplicitly]
attribute, which is a part of ReSharper Annotations. However, instead of applying it in code to your types, it would be best to annotate the base types (I'm guessing MonoBehavior
? I'm sorry, I'm not familiar with Unity3D API). This way, every type you implement that derives from those, will automatically inherit the [UsedImplicitly]
attribute.
The best and non-intrusive way this could be done is by External Annotations - same as code annotations, but applicable externally via XML.
There are 3 choices here: either you do this yourself (take a look at ExternalAnnotations directory, located either at
%localappdata%\JetBrains\ReSharper\vAny\packages\ReSharper.ExternalAnnotations...
since ReSharper 8.2, or
C:\Program Files (x86)\JetBrains\ReSharper\vX.X\ExternalAnnotations
in previous versions)
You can find examples of external annotations XMLs, and create one yourself, following the same naming conventions. To help you with copying method names in the correct format, you could use Copy XML-Doc ID to Clipboard
option under the Edit menu in ReSharper.
This way you can annotate the Unity3D base classes, and then distribute this XML as a ReSharper extension for others' benefit.
(the other two things you can do is either convince Unity3D to do this themselves, or open an issue on ReSharper's bug tracker, and maybe JetBrains will do that. But your best bet is to do this yourself).
Hope this helps.