2014-06-30 76 views
0

在Unity中,我發現將檢測器變量(由Unity反射或魔術設置)聲明爲私有並用[SerializeField]屬性對它們進行註釋是一種方便的模式。這使編程界面保持乾淨,同時允許Inspector設置字段。我也使用Resharper,並讓它知道這些字段是隱式設置的,我使用屬性[UsedImplicitly(ImplicitUseKindFlags.Assign)]如何將兩個C#註釋組合到「快捷方式」註釋中?

這給我留下了很多的變量作爲註釋的磚牆在那裏找到變量發生不必要的努力:

[SerializeField, UsedImplicitly(ImplicitUseKindFlags.Assign)] 
private Transform headingLabel; 
[SerializeField, UsedImplicitly(ImplicitUseKindFlags.Assign)] 
private Transform coolDataLabel; 
[SerializeField, UsedImplicitly(ImplicitUseKindFlags.Assign)] 
private GameObject yetAnotherLabelToMakeThePoint; 

我怎麼能這些註釋合併成一個單一的註釋[PrivateInspectorVariable]具有相同的行爲嗎?

回答

1

通過this answer堆棧溢出:

但是沒有什麼會採取兩種屬性的情況下,使一個標準工具。

(理論上,後處理器是重新寫了MSIL可以做到這一點。)

我的建議是寫在不同的行和利用空間的屬性,以使它們更容易閱讀:

[SerializeField] 
[UsedImplicitly(ImplicitUseKindFlags.Assign)] 
private Transform headingLabel; 

[SerializeField] 
[UsedImplicitly(ImplicitUseKindFlags.Assign)] 
private Transform coolDataLabel; 

[SerializeField] 
[UsedImplicitly(ImplicitUseKindFlags.Assign)] 
private GameObject yetAnotherLabelToMakeThePoint; 
+0

所以,可能不可能,這也是我開始想的。如果有人有解決方案,我會留下問題。 (我喜歡這裏的關鍵詞,因爲這裏的所有屬性都完全相同,並且有20-30個變量正在進行 - 更短的卷軸:D) –

+0

是的,這完全是一個偏好問題。什麼適合你是最好的選擇。也許有人會修改語言規範以允許複合屬性,但這不太可能,因爲我相信這將需要多重繼承。 –

相關問題