Unity3d 載入 C++/CLI (託管模式c++) 的動態庫(DLL)
由於最近開發遊戲尋路A*使用非常頻繁.所以是邏輯上的瓶頸. c#又比c++慢一倍.所以決定上c++.這樣算一種優化吧.哈哈.
關於vs上的vc++.分託管和非託管模式. 託管模式就是 C++/CLI 也就說可以c++使用.net庫. 和 CLR是一起的. 還有就是 非託管模式就是傳統的c++直接呼叫win32 API.
兩種方式都可以建立dll. 但是如果是和c# 連用肯定是 託管模式的更方便一些.下面就講解下如何 unity3d 使用 CLR的C++/CLI.網上充斥著 使用非託管模式c++和unity連用的方式,這裡本尊就不在闡述了..
書歸正傳:
環境:
1. vs2012 或者 vs2013.
2. unity4.3.0
首先說一下CLR專案的建立.
開啟vs.然後新建. 這時候選擇. CLR庫專案.
之後就進入了專案.然後加入如下程式碼 用來測試 是否dll 被使用. a 和 b 相加返回結果.很簡單的程式.
之後就是需要改一些專案的屬性. 因為unity使用mono的原因.
1.Framework3.5 是 unity的版本. 這裡本人的vs是2012/2013 使用fw 4.5了. 所以高了這裡需要降下來.由於IDE裡面沒有選項所以需要開啟 proj檔案來修改版本.
把v4.5 改成 v3.5就ok.
2.clr也是很多版本的. unity支援 safe的clr. 所以這個也需要改.
專案上面 右鍵屬性.
選成 safe的clr.就可以了. 然後編譯出來 dll.
最後就是.把dll copy到unity裡面去使用.unity需要建一個plugin的資料夾來存放dll.
放到這個資料夾裡 之後.unity就可以使用了.
然後我們建立一個unity的c#指令碼.來呼叫TSEngineCLI.
之後把這個c#指令碼拖到隨便一個GameObject上面. 執行一下. 會看到Console框 裡面輸出了3. 說明大功告成.哇嘎嘎.
好了.祝大家看的開心.編的愉快. 拜拜~...