unity 工程編譯順序

我們在Unity3D開發的時候,經常會看到它會產生不少固定命名工程文件,諸如:

Assembly-CSharp-vs.csproj 

Assembly-CSharp-firstpass-vs.csproj

Assembly-CSharp-Editor-vs.csproj

Assembly-CSharp-Editor-firstpass-vs.csproj

看得不少人云裏霧裏的。那麼,這些工程是如何產生的呢?各自的作用是什麼?下面就來逐一解析。

一. 首先從腳本語言類型來看,Unity3D支持3種腳本語言,都會被編譯成CLI的DLL

如果應用中含有C#腳本,那麼Unity3D會產生以Assembly-CSharp爲前綴的工程,名字中包含"vs的"是產生給Visual Studio使用的,不包含"vs"的是產生給MonoDevelop用的。

應用中包含的腳本語言

工程前綴

工程後綴

C#

Assembly-CSharp

csproj

JavaScript

Assembly-UnityScript

unityproj

Boo

Assembly-Boo

booproj


如果工程中這3中腳本都存在,那麼Unity3D將會生成3種前綴類型的工程。

 

二. 對於每一種腳本語言,根據腳本放置的位置(其實也部分根據了腳本的作用,比如編輯器擴展腳本,就必須放在Editor文件夾下),Unity3D會生成4種後綴的工程。其中的firstPass就表示先編譯,Editor表示放在Editor文件夾下的腳本。

下面以C#腳本爲例。如果工程中只有C#腳本,不考慮爲VS和MonoDevelop各自生成工程的差異性,我們可以得到4個工程文件:

Assembly-CSharp-firstpass-vs.csproj

Assembly-CSharp-Editor-firstpass-vs.csproj

Assembly-CSharp-vs.csproj 

Assembly-CSharp-Editor-vs.csproj

(1) 所有在Standard Assets,Pro Standard Assets或者 Plugins文件夾中的腳本會產生一個Assembly-CSharp-firstpass-vs.csproj文件,並且先編譯;

Standard Assets Assembly-CSharp-firstpass.dll
Pro Standard Assets
Plugins【排除Plugins/Editor】

(2) 所有在Standard Assets/Editor, Pro Standard Assets/Editor 或這Plugins/Editor文件夾中的腳本產生Assembly-CSharp-Editor-firstpass-vs.csproj工程,接着編譯;

Standard Assets/Editor Assembly-CSharp-Editor-firstpass.dll
Pro Standard Assets/Editor
Plugins/Editor

(3) 所有在Assets/Editor外面的, 並且不在(1),(2)中的腳本文件(一般這些腳本就是我們自己寫的非編輯器擴展的腳本)會產生Assembly-CSharp-vs.csproj工程,被編譯;

排除Assets/Editor Assembly-CSharp.dll
排除(1)
排除(2)

(4) 所以在Assets/Editor中的腳本產生一個Assembly-CSharp-Editor-vs.csproj工程,被編譯。

Assets/Editor Assembly-CSharp-Editor.dll

之所有這樣建立工程並按此順序編譯,也是因爲DLL間存在的依賴關係所決定的。

 

轉http://blog.csdn.net/jjiss318/article/details/7632041

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章