Unity-命名空間
隨著項目變得越來越大并且腳本數(shù)量增加,腳本類名稱之間發(fā)生沖突的可能性也越來越大。當幾個程序員分別處理游戲的不同方面并最終將他們的工作結合在一個項目中時,尤其如此。例如,一個程序員可能正在編寫代碼來控制主要玩家角色,而另一個程序員則為敵人編寫等效的代碼。兩個程序員都可能選擇調用他們的主腳本類 _Controller_,但這樣會在他們的項目組合在一起時引起沖突。
在某種程度上,可通過采用命名約定或通過在發(fā)現(xiàn)沖突時對類重命名來避免此問題(例如,上面的類可命名為類似?PlayerController?和?EnemyController?的名稱)。但是,當存在多個具有沖突名稱的類或當使用這些名稱來聲明變量時,這很麻煩:必須替換每次出現(xiàn)的舊類名才能編譯代碼。
C# 語言提供了稱為命名空間的功能,以一種可靠的方式解決了該問題。命名空間就是類的集合;引用集合中的類時需要在類名中使用所選的前綴。在下面的示例中,類?Controller1?和?Controller2?是名為?Enemy?的命名空間的成員:
在代碼中,這些類分別以?Enemy.Controller1
?和?Enemy.Controller2
?的形式引用。就目前而言,這種解決方案比重命名類更好,因為命名空間聲明可在現(xiàn)有類聲明外層括起來(即,沒有必要單獨更改所有類的名稱)。此外,無論類在任何位置,均可使用多個帶括號的命名空間部分將類包裹起來,即使這些類位于不同的源文件中也是如此。
通過在文件頂部添加?using?指令可避免重復輸入命名空間前綴。
此行表示,在出現(xiàn)類名?Controller1?和?Controller2?的位置,它們應分別表示?Enemy.Controller1?和?Enemy.Controller2。如果腳本還需要引用不同命名空間中同名的類(比如說名為?Player?的命名空間),那么仍然可以使用前綴。如果同時使用 using 指令導入兩個包含沖突類名的命名空間,則編譯器將報錯。