網上搜了一些DLL的創建、編寫、使用的學習資料,感覺比較的凌亂。或是復雜抽象,或是關鍵地方一筆帶過,不是很適合萌新。於是決定還是圖文記錄一下該過程,盡量精簡而又明確。
學習資料:
- https://docs.unity3d.com/Manual/UsingDLL.html
- http://www.cnblogs.com/cuishao1985/archive/2009/08/11/1543891.html
創建DLL文件
打開Visual Studio,新建一個項目,選擇模板Visual C#的類庫,.Net Framework選擇3.5版本(Unity5使用的Mono版本對應.net framework 3.5),如下圖。
新建一個DLLProjectClass類,編寫類的方法,如下。
namespace TestDLLProject { public class DLLProjectClass { // 用本類對象來調用的普通方法 public string GetStr(string str) { return "調用了DLL中的方法!輸入的str = " + str; } // 靜態方法 public static int GetInt(int num) { return (num + 1); } } }
在Visual Studio的【解決方案資源管理器】中右鍵點擊該項目,點擊【生成/重新生成】,或者直接整個【重新生成整個方案】,即可編譯該項目。
之后會在項目路徑下生成bin文件夾,生成的DLL文件就在bin\Debug文件夾下。
在其他VS項目中使用DLL
再在Visual Studio新建一個項目,在【解決方案資源管理器】中右鍵點擊該項目的【引用】,點擊【添加引用】。
彈出【引用管理器】窗口后,點擊右下角的【瀏覽】,找到剛才生成的DLL的文件夾路徑,添加DLL進項目。
之后就能在【引用】中看到該DLL了。
最后在該項目中使用DLL中的方法。代碼如下。
public void Initialize() { int a = 1; int b = TestDLLProject.DLLProjectClass.GetInt(a); Console.WriteLine("調用DLL的靜態方法后, b = " + b.ToString()); TestDLLProject.DLLProjectClass c = new TestDLLProject.DLLProjectClass(); string result = c.GetStr("啦啦啦"); Console.WriteLine(result); }
輸出的結果:
在DLLProjectClass按下F12可以看到該DLL的內容如下。只有方法簽名,沒有方法的實現細節。
在Unity項目中使用DLL
Unity項目中想要添加該DLL,跟上文的在其他VS項目中添加DLL有點不一樣。
編輯Unity項目的C#腳本時,在Visual Studio的【解決方案資源管理器】中,右鍵【引用】,會發現根本沒有【添加引用】這一項!
回到Unity編輯器,在Assets文件夾下新建一個Plugins文件夾,在資源管理器中把DLL文件復制到Plugins目錄下。(其實在Assets文件夾下任意地方都行,看別人的案例習慣放在Assets/Plugins下)
再次回到Unity編輯器,等Unity編譯好后,就能在Visual Studio中看到添加了該DLL的引用!
之后的調用DLL中的方法,就跟上文的差不多了。在Mono腳本中Start方法調用。代碼如下。
public class TestDLL : MonoBehaviour { void Start() { int a = 1; int b = TestDLLProject.DLLProjectClass.GetInt(a); Debug.Log("調用DLL的靜態方法后, b = " + b.ToString()); TestDLLProject.DLLProjectClass c = new TestDLLProject.DLLProjectClass(); string result = c.GetStr("啦啦啦"); Debug.Log(result); } }
輸出如下: