2013-03-21 54 views
1

我正在開發面向iOS的Unity3D插件。出於某種原因,我需要在本機代碼中指定一些代碼(Xcode中的.mm),以便在Unity3D 4.1之前編譯,而在Unity3D 4.1(包括)之後編譯其他代碼。也許是這樣的:我可以在Xcode中獲得Unity3D引擎版本嗎?以及如何根據版本進行條件編譯?

#if UNITY_VERSION < UNITY_4_1 
    //Some code be compiled before Unity4.1 
#else 
    //Some code for new version 
#endif 

我知道有在Unity3D編輯器Platform Dependent Compilation,但我怎麼能得到發動機的在Xcode版本,並做了「基於條件編譯Unity引擎版本」?任何建議將不勝感激!

編輯:也許我可以爲不同版本編寫兩個.mm文件,並在[PostProcessAttribute]中刪除其中的一個。但我認爲這不是一個好主意......

回答

0

這並不完全清楚你想要做什麼。通過注入Unity創建的XCode項目構建本機代碼?或者,您是否將本機代碼構建到Unity中包含的庫中?

AFAIK沒有辦法讓XCode提前知道您使用的是哪個版本的Unity,而無需檢查Unity的安裝並找出確定方法。

如果你在做後者,即構建一個包含在Unity構建中的本地代碼庫。在這種情況下,您需要兩個獨立的庫,並指示用戶包含相關的任何一個。

如果你正在做前者,即向Unity創建的XCode項目注入新的本地代碼,那麼Unity會導出#defines,以便確定本地代碼需要編譯的Unity版本。

+0

感謝您的回答。由不同版本的Unity3D生成的代碼並不相同。我需要爲我的插件編寫不同的代碼,取決於Unity的版本。所以我認爲你的答案是後者。現在我正在使用兩個Unity版本之間生成代碼的差異來確定它。再次感謝你。 – onevcat 2013-05-04 15:11:43

相關問題