全面解析Unity3D自動生成的指令碼工程檔案

2021-07-14 17:42:40 字數 1509 閱讀 9677

我們在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用的。

如果工程中這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檔案,並且先編譯;

(2) 所有在standard assets/editor, pro standardassets/editor或這plugins/editor資料夾中的指令碼產生assembly-csharp-editor-firstpass-vs.csproj工程,接著編譯;

(3) 所有在assets/editor外面的,並且不在(1),(2)中的指令碼檔案(一般這些指令碼就是我們自己寫的非編輯器擴充套件的指令碼)會產生assembly-csharp-vs.csproj工程,被編譯;

(4) 所以在assets/editor中的指令碼產生乙個assembly-csharp-editor-vs.csproj工程,被編譯。

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

好了,至此也說得比較清楚了,也不會因為見到那麼多的工程檔案而疑惑了。

最後問諸位乙個小問題:乙個unity3d的工程,最多可以產生多少個工程檔案?

4*3*2 = 24個

unity3d 解析XML檔案

解密xml檔案一般有這兩種辦法 1,將xml檔案放在assets streamingassets 檔案下,然後通過 www 方式讀取到xml檔案的字串內容,然後使用mono.xml外掛程式進行解析 2,將xml檔案放在assets resources 檔案下,然後通過 resources.load ...

Unity3D開發(九) Unity3d流光效果

遊戲開 壇 hello game 遊戲開發群 201276069 之前曾經注意過material 中紋理的屬性都有 tiling 和offset 但沒有深究過其用途,今天才知道竟然可以利用 offset做uv 動畫,從而完成各種有趣的動畫,比如流光效果!流過效果即通常一條高光光在物體上劃過,模擬高光...

Unity3d 使用C 指令碼生成與解析XML

xml extensible markup language 可拓展性標記語言,標準通用標記語言的子集,是一種用於標記電子檔案使其具有結構性的標記語言。在unity3d開發中,xml雖然容易冗餘資訊,但其可讀性強,我們通常會編寫xml來儲存資料。使用c 指令碼建立xml檔案,直接上 注釋寫的很清楚了...