Non, là tu essayes de récupérer le component directement sur ton objet player.
Si tu mets "public Weapon wpn;" en déclaration de variable dans ton script, cette variable wpn va apparaitre dans la fenêtre inspector de l'éditeur d'Unity, lorsque ton gameObject est sélectionné.
A partir de là, tu peux faire un drag & drop de ton arme, depuis la fenêtre hierarchy, directement dans l'inspecteur, pour l'assigner à ton player, sans avoir à passer par le code.
Je viens de comprendre un gros truc la ça va régler pas mal de problèmes hehe..
En effet j'étais tout le temps dans l'idée que tout se passait dans le script alors que ça va carrément plus vite sur l'interface Unity.