1. 程式人生 > >Unity3d 載入 C++/CLI (託管模式c++) 的動態庫(DLL)

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. 說明大功告成.哇嘎嘎.

好了.祝大家看的開心.編的愉快. 拜拜~...